变量定义
- 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
- 常量定义 const 不需要指定类型 const abc = 123
自定义类型
//定义方法类型 type f func() //定义接口类型 type i interface { } //定义结构体 type people struct { Name string age int } t := people{ name:"ss" age:10 }
函数、方法定义
//方法定义, 根据结构体定义 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 会打印出"" 对字符串进行包裹 }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。