go 变量的声明和赋值

1、同一行声明多个变量和赋值,可简写为 a,b:=1,2 2、全局变量声明必须要用var 局部变量可以省略 3、特殊变量用下划线"_" 4、大写字母开头的变量是共有变量,相当于public, 小写字母开头的是私有变量,相当于private 5、常量定义返回只支持 字符串 数字 布尔等基本类型 const name int = 10; 6、跳值使用 _ iota; 插队使用

const (
	//每次往下都要加一
	// 下划线作为占用  可实现跳值
	d = iota;
	e=iota;
	_
	f=iota;
)     

用go实现面向对象特征

go中没有object一说,取而代之换为了 struct 来定义对象,先定义一个地址的类型

type Address struct {
	latitude float32
	lontitude float32
}

进而再定义一个用户的类型

type User struct {
	userName string
	age int
	gender int
	//注意,这里引用的是address的类型
	address Address
}

然后我们再写一个方法来调用这个类型

//这里的调用对象是引用的是一个地址
func (user *User)  getAddress() {
  fmt.Println(user.address)
}
//类似于对象的调用
func main() {
user :=User{
	userName:"ChoviWu",
	age:20,
	gender:1,
	address:Address{
		latitude:  100,
		lontitude: 200,
	},
}
//基于多态的调用 
user.getAddress();
}

go实现接口的调用

方法,1、先定义一个接口 2、 然后写一个目标调用方法,将接口作为调用方法的参数(类似于java里面的组合),这里我用 代码来演示

/**
 定义一个接口
 */
type Human interface {
	Talk()
}
//可以理解为代理方法
func SpeakTo(h Human) {
//实际方法即 对象的方法
	h.Talk()
} 
func main() {
	p := User{userName: "choviwu"}
	c := Country{p}
	//这里用对象类型来作为参数,目的是让User类型和Contry类型都作为接口的实现类
	//
	SpeakTo(&p)
	SpeakTo(&c)
}
 //实际执行的方法
func (user *User)Talk()  {
	fmt.Println("hello world ",user.userName)
}