最近闲来无聊,看了看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中没有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();
}
实现接口的调用
方法:
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)
}