通过以下指令查看Go的工作目录
go env GOPATH
package main // 必须 // 导入其他包裹 import ( "fmt" // 输入输出 ) // 主函数 fun main() { fmt.Println("Hello, Wolrd!") }
定义的变量必须被使用,否则将会报错
var a int // 定义整型, 默认值为0 var b string // 定义字符串,默认为空字符串 // 其他定义方法 a := x b := "hi"
if a > 1 { fmt.Println("bigger than 1") } else if a < 0 { fmt.Println("less than 0") } else { fmt.Println("something else") } if a > 1 && a < 10 { fmt.Println("Right") }
元组(Tuple) 不是 数组(Array)
元组长度不可变
//定义元组 var a [3] int a := [3]int{1,2,3} // 修改元组中元素的值 a[1] = 9
切片的长度可变
a := []int{1,2,3} a = append(a,10) // 结尾添加值为10的变量
原理:切片创建一个新的长度翻倍的元组,将旧元组的值拷贝到新元组中,并添加新值,释放旧元组所占内存。
类似于词典
//初始化映射 numbers := make(map[string]int) //映射不固定大小 numbers["one"] = 1 numbers["two"] = 2 //删除关键词 delete(numbers, "one")
go 语言中没有while循环
for i := 0; i < 5; i++ { fmt.Println(i) }
但可以通过for循环间接实现
i := 0 for ; i<5; { fmt.println(i) i++ } // 无限循环 for { fmt.println(i) i++ }
for循环遍历元组、映射
a := []int{1,2,3,4,5} for k, v := range a { fmt.Println(k, v) } for k, v := range numbers { fmt.Println(k, v) }
定义
func add(x int, y int) int { return x + y }
可以不返回值,也可以返回多个值
func do_math(x int, y int) (int,int) { return x+y, x*y }
还可以返回一个函数(闭包)
......
n := 0 add(&n) fmt.Println(n) func add(n *int) { *n = *n + 1 }
go语言并非完全的面向对象语言,没有类
// 定义结构体 type cat struct { name string age int } func main() { cat1 := cat{name: "kitty", age: 3} cat1.age=4 fmt.Println(cat1) }
可以给自定义类型创建方法
type MyFloat float64 func (n MyFloat) show() { fmt.Println(n) } func main() { var a MyFloat = 1.5 a.show() } //同样可以使用指针
本文参考:【硬货】新时代最流行的编程语言?10分钟学会Golang基础