2016-03-28 13 views
0

Bir Go sunucusunu yazmayla ilgili kılavuzu izliyorum here.Git sunucusunun ServeHTTP yöntemini bildirme

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 
    // ^^^^^ What does this do? 

Bir dönüş türü gibi görünmüyor:

Ben şu bloğu anlamıyorum. Go'da benim anlayışım, dönüş türlerinin bir fonksiyonun parametrelerini takip etmesidir.

func hello(s String) int {} 

Yani ServeHTTP bildiriminde (*myHandler) ne yapar: Bir tamsayı döndüren bu işlev gibi mi? Aşağıdaki metodun

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 

myHandler olarak

+6

ServeHTTP, * myHandler türünde bir yöntemdir. Bkz. Https://tour.golang.org/methods/1 –

cevap

2

yöntemin alıcısıdır. Bu method definition yaklaşık git belgelerinde açıklanmıştır:

bir yöntem olup, bir alıcı bir fonksiyonudur. Bir yöntem beyanı, bir tanımlayıcı, yöntem adını, bir yönteme bağlanır ve yöntemi, alıcının taban tipi ile ilişkilendirir.

Alıcı, yöntem adından önce ek bir parametre bölümü ile belirtilir. Bu parametre bölümü alıcı olmayan tek bir değişken parametre bildirmelidir. T tipi, T tipi bir isim olması gereken T veya * T biçimindedir (muhtemelen parantezler kullanılarak). T ile gösterilen tip, alıcı taban tipi olarak adlandırılır; İşaretçi veya arabirim türü olmamalı ve yöntemle aynı pakette bildirilmelidir. Metodun taban tipine bağlı olduğu ve metot isminin sadece T veya T tipi tipler için seçici olarak görüldüğü söylenir.

+0

@dopatraman - Bu durumda yöntemin dönüş türü olmadığını unutmayın. Fonksiyonlar sıfır, bir veya birçok değer döndürülebilir. –