golang

Go基础三:方法和接口

July 6, 2020
golang

方法 # 定义 Go中没有类,不过可以为结构体类型定义方法。方法就是一类带有特殊「接收者」参数的函数。 1 2 3 4 5 6 7 8 9 10 11 12 type Vertex struct { X, Y float64 } func (v Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v := Vertex{3, 4} fmt.Println(v.Abs()) } 方法接收者,在func与方法名之间。这里是(v Vertex)。相当于为Vertex类型定义了方法Abs 非结构体类型的方法 1 2 3 4 5 6 7 8 9 10 11 12 13 type MyFloat float64 func (f MyFloat) Abs() float64 { if f < 0 { return float64(-f) } return float64(f) } func main() { f := MyFloat(-math. ...

Go基础一:包、变量和函数

June 29, 2020
golang

包 # 每个Go程序都由包构成,程序从main方法开始执行。 通过下面这段代码来学习「包」相关的几个知识点。 1 2 3 4 5 6 7 8 9 10 11 12 package main import (#1# "fmt" "math/rand" "math" ) func main() { fmt.Println("My favorite number is", rand.Intn(10))#2# fmt.Println(math.pi)#3# } 1程序导入了fmt math/rand两个包。 1可以用圆括号进行“分组”导入,也可以分别导入。 1 2 import "fmt" import "math" 2程序中以路径中的最后一段为包名。 3以大写字母开头的变量是导出的,此处用小写的math.pi就不会导出,会报错,需要改完大写的math.Pi才能正常运行。 函数 # 函数可以没有参数或接收多个参数 1 2 3 func add(x int, y int) int { return x + y } 多个相同的类型可用省略写法 1 2 3 func add(x, y int) int { return x + y } 可返回任意数量的返回值 1 2 3 func swap(x, y string) (string, string) { return y, x } 返回值可以被命名,它们被视为定义在函数的顶部 1 2 3 4 5 func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x return } 无参数的 return 返回已命名的返回值 无参数的 return 应该仅在这样短小的函数中使用,否则会影响可读性 变量 # var 用于声明变量列表,类型在最后。可出现在包和函数级别 1 2 3 4 5 6 7 8 9 10 package main import "fmt" var c, python, java bool func main() { var i int fmt. ...