golang从入门到精通(一)变量定义

2022-07-19  本文已影响0人  mafa1993

代码地址

  1. 变量定义
    • var x String = “abc”;
    • x := 123 隐藏类型,自动判断类型
//批量定义
var ( 
    a string = "1"
    b int = 1
)

const (
    a = 1
    b = "abc"
)

const (
    s = iota  //iota计数器 常量计数器,会重置为0,重新计数, 每隔一行加1,如果有其他定义占行,会再累加
    i
    k
)
fmt.Println(s) //0
fmt.Println(i) //1
fmt.Println(k) //2
  1. 常量定义 const 不需要指定类型 const abc = 123
  2. 自定义类型
//定义方法类型
type f func() 

//定义接口类型
type i interface {
    
}
//定义结构体
type people struct {
    Name string
    age int
}

t := people{
    name:"ss"
    age:10
}
  1. 函数、方法定义
//方法定义, 根据结构体定义
func (u people) getName() string {
    return u.name
}
//先创建结构体,才能使用方法,可想象成 new
t := people{  //调用时,t会传递给u
    name:"ss"
    age:10
}
t.getName()   


// 使用接口,需要借助结构体,先定义个类型,是接口类型,然后结构体实现了接口的方法,这个结构体就相当于接口的继承,然后使用结构体调用方法
type Retriever interface {
    Get(string) string
}

var r Retriever         // Retriever接口
r = re.Retriever{"abc"} //Retriever结构体实现了Retriever接口 可以当做Retriever接口传入
fmt.Println(r.Get("abc"))

案例

package main

import "fmt"

var aa int = 1
var bb string = "函数外定义变量  包内可见"

// 函数外不能使用:=
var (
    cc string = "使用var定义多个变量,只写一次var"
    dd int    = 1
)

func main() {
    fmt.Println("hello World")
    variable()
    fmt.Println(aa, bb, cc, dd)
}

func variable() {
    var a int // 先定义名称  再定义类型   例如定义一个变量一般会先想到名字  再想到类型
    var s string
    fmt.Println(a, s) // int 的初始值是0  string的初始值时"" 在c语言中值不固定,在java中 不管任何类型初始值都为null

    var b, c int = 4, 5 // 可以一次定义多个变量,变量必须使用,不使用会报错   避免定义无用变量

    var str = "abc" // 可以不定义类型,会自己推断

    fmt.Println(b, c, str)

    var d, e, f = 1, "e变量值", true // 可以同时给不同类型的变量赋值,不能多个变量定义不同的类型并赋初始值  var a int, b int 这样是不行的

    g, h := true, 10 // 初次定义使用:= 推断类型,代替var ,:= 只能在函数内使用,不能在函数外使用

    fmt.Println(d, e, f, g, h)

    fmt.Printf("%d %q", a, s) // %q和%s区别: %q 会打印出"" 对字符串进行包裹
}
上一篇 下一篇

猜你喜欢

热点阅读