函数 function
package main
import "fmt"
func main() {
fmt.Println(Add(8, 7))
fmt.Println(Subtraction(8, 7))
fmt.Println(Multiplication(2, 3, 5, 10))
}
func Add(number1 int, number2 int) (number3 int) {
number3 = number1 + number2
return
}
func Subtraction(number1, number2 int) int {
number3 := number1 - number2
return number3
}
func Multiplication(number ...int) int {
total := 1
for _, v := range number {
total *= v
}
return total
}
15
1
300
结构 struct
- Go提供的结构体就是把使用各种数据类型定义的不同变量组合起来的高级数据类型
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
fmt.Println(Person{"A", 18})
fmt.Println(Person{Name: "B", Age: 19})
fmt.Println(Person{Name: "C"})
}
{A 18}
{B 19}
{C 0}
方法method
package main
import "fmt"
type Calculation struct {
number1 int
number2 int
}
func (c Calculation) Add() int {
number3 := c.number1 + c.number2
return number3
}
func main() {
c := Calculation{7, 8}
fmt.Println(c.Add())
}
15
接口 interface
//接口是方法签名的集合(方法签名就是定义为:方法名+参数列表)
package main
import "fmt"
//几何体的接口。
type geometry interface {
area() int64
perimeter() int64
}
type square struct {
longside int64
}
type rectangle struct {
width, height int64
}
//正方形实现几何体接口
//只要某个类型拥有该接口的所有方法签名,即算实现该接口
//任何其他类型都实现了空接口
func (s square) area() int64 {
return s.longside * s.longside
}
func (s square) perimeter() int64 {
return s.longside * 4
}
func (r rectangle) area() int64 {
return r.width * r.height
}
func (r rectangle) perimeter() int64 {
return (r.width + r.height) * 2
}
//如果一个变量是接口类型, 可以通过这个变量调用接口里的方法
//一个函数把interface{}作为参数,那么他可以接受任意类型的值作为参数,如果一个函数返回interface{},那么也就可以返回任意类型的值
func test(g geometry) {
fmt.Println(g)
fmt.Printf("面积是%d,周长是%d\n", g.area(), g.perimeter())
}
func main() {
s := square{longside: 5}
r := rectangle{width: 7, height: 8}
fmt.Printf("正方形的面积是%d,周长是%d\n", s.area(), s.perimeter())
fmt.Printf("长方形的面积是%d,周长是%d\n", r.area(), r.perimeter())
test(s)
test(r)
}
正方形的面积是25,周长是20
长方形的面积是56,周长是30
{5}
面积是25,周长是20
{7 8}
面积是56,周长是30