go方法和函数

238 阅读1分钟

方法:有一个老大(一般是结构体),(t *TypeDemo) ,并且必须通过(一般是结构体)调用

func (t *TypeDemo) add() {
	
}

函数:无老大,必须通过包来调用

func add() {
	
}

他们可以存在同于一个文件里,像结构体和方法,这个很好理解,就是一个类;但是同时存在函数是什么意思?
其实这些函数,就相当于类的静态方法。比如单例模式的getInstant(),工厂模式的Factory.create(),方便更好的操作类;当然,可以在类的外部调用的方法中,对类进行操作,比如

func main() {
   http.ListenAndServe(":1210", nil)  //这里的ListenAndServe就是函数,必须包来调用
}

可以改为

func main() {
   server := &http.Server{
        Addr:         ":1210",
        WriteTimeout: time.Second * 3,            //设置3秒的写超时
        Handler:      mux,
   }
   server.ListenAndServe()  //这里的ListenAndServe就是方法,必须结构体来调用
}