- interface:由于函数式编程,可以当作参数来实现函数类型泛型参数,只要传入的参数满足interface即可被函数接受。
- 没有类和继承的概念,通过interface来实现多态性
- 没有public,private等关键字,可见域的实现通过首字母大小写
- 只有切片、指针、channel、map及func属于引用类型,java和C#中属于引用类型的数组在golang中属于值类型
- 函数可以脱离"类"而存在,可以依赖于结构体(依赖于结构体调用的叫做方法)或者依赖于包名来调用
- 函数不基于结构体而是基于包名调用,方法基于结构体调用
- 显式指针转换:Java和Golang方法传参时传递的都是值类型,在Java中如果传递了引用类型(对象、数组等)会复制其指针进行传递, 而在Golang中必须要显式传递Person的指针,不然只是传递了该对象的一个副本。
- 隐式指针转换,结构体调用方法时,如果传递的是对象,那么会被自动转化为指针调用,例:
type Person struct {
Name string
Age int}func (p *Person) Solve() {
fmt.Println(p)}func main() {
p := entity.Person{
Name: "ARong",
Age: 21,
}
pp := &p
pp.Solve()
p.Solve
}