Golang语言特性(自记录向,不要点进来浪费时间了)

107 阅读1分钟
  1. interface:由于函数式编程,可以当作参数来实现函数类型泛型参数,只要传入的参数满足interface即可被函数接受。
  2. 没有类和继承的概念,通过interface来实现多态性
  3. 没有public,private等关键字,可见域的实现通过首字母大小写
  4. 只有切片、指针、channel、map及func属于引用类型,java和C#中属于引用类型的数组在golang中属于值类型
  5. 函数可以脱离"类"而存在,可以依赖于结构体(依赖于结构体调用的叫做方法)或者依赖于包名来调用
  6. 函数不基于结构体而是基于包名调用,方法基于结构体调用
  7. 显式指针转换:Java和Golang方法传参时传递的都是值类型,在Java中如果传递了引用类型(对象、数组等)会复制其指针进行传递, 而在Golang中必须要显式传递Person的指针,不然只是传递了该对象的一个副本。
  8. 隐式指针转换,结构体调用方法时,如果传递的是对象,那么会被自动转化为指针调用,例:
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    
}