-
package main
import "fmt"
type Animal interface {
? ? Grow()
Move(string) string
}
type Cat struct {
? ? Name? ? string?
? ? Age uint8
? ? Location? ? string
}
func (cat *Cat) Grow() {
? ??
}
func (cat *Cat) Move(place string) string {
? ? return "hello"
}
func main() {
myCat := Cat{"Little C", 2, "In the house"}
v := interface{}(&myCat)
animal, ok := v.(Animal)
fmt.Printf("%v, %v\n", ok, animal)
}
查看全部 -
對(duì)于緩存通道
如果通道已滿,所有的發(fā)送操作就會(huì)阻塞,直到通道中有元素被取走
如果通道已空,所有的接收操作就會(huì)阻塞,直到通道中有新的元素
對(duì)于非緩存通道
無(wú)論發(fā)送操作還是接受操作一開(kāi)始就是阻塞的,只有配對(duì)的操作出現(xiàn)才會(huì)開(kāi)始執(zhí)行。
查看全部 -
有兩個(gè)方面。查看全部
-
需要查看全部
-
只要一個(gè)函數(shù)的參數(shù)聲明列表和結(jié)果聲明列表中的數(shù)據(jù)類(lèi)型的順序和名稱(chēng)與某一個(gè)函數(shù)類(lèi)型完全一致,前者就是后者的一個(gè)實(shí)現(xiàn)。
匿名函數(shù)直接由函數(shù)類(lèi)型字面量和由花括號(hào)包裹的語(yǔ)句列表組成。注意,這里的函數(shù)類(lèi)型字面量中的參數(shù)名稱(chēng)是不能被忽略的。
查看全部 -
發(fā)送方在向通道值發(fā)送數(shù)據(jù)的時(shí)候會(huì)立即被阻塞,直到有某一個(gè)接收方已從該通道值中接收了這條數(shù)據(jù)。
查看全部 -
一個(gè)數(shù)據(jù)類(lèi)型包含某接口所有方法的實(shí)現(xiàn),就可以說(shuō)實(shí)現(xiàn)了該接口
查看全部 -
1. go run -a -v 列出所有代碼包
查看全部 -
package main
import "fmt"
type Person struct {
Name? ? string
Gender? string
Age? ? ?uint8
Address string
}
func main() {
p := Person{"Robert", "Male", 33, "Beijing"}
oldAddress := p.Move("San Francisco")
fmt.Printf("%s moved from %s to %s.\n", p.Name, oldAddress, p.Address)
}
func (person *Person)Move(address string) string {
oldAddress := person.Address
person.Address = address
return oldAddress
}
查看全部 -
這才是正確的輸入輸出? ,答案都是錯(cuò)誤 ,
同意的點(diǎn)個(gè)贊?
查看全部 -
Go 關(guān)鍵字:
程序聲明 ?? import package
程序?qū)嶓w聲明和定義 ?? chan const func interface map struct type var
程序流程控制??? go select break case continue default defer else fallthrough for goto if range return switch
查看全部 -
Go的優(yōu)勢(shì):
1,靜態(tài)+編譯型,執(zhí)行速度快;
2,原生支持并發(fā),開(kāi)發(fā)效率高;
Go的劣勢(shì):
1,年輕,語(yǔ)法糖較少,第三方函數(shù)庫(kù)相對(duì)不多;
2,執(zhí)行速度目前還不及C;
查看全部 -
Go的特點(diǎn):
1,靜態(tài)編譯型;
2,開(kāi)源;
3,原生支持并發(fā);
查看全部 -
只要一個(gè)類(lèi)型的方法集合包含了名為
Error
、無(wú)參數(shù)聲明且僅聲明了一個(gè)string
類(lèi)型的結(jié)果的方法,就相當(dāng)于實(shí)現(xiàn)了error
接口。os.Open
函數(shù)的第二個(gè)結(jié)果值就的類(lèi)型就是這樣的。我們把它賦給了變量err
。也許你已經(jīng)意識(shí)到,在Go語(yǔ)言中,函數(shù)與其調(diào)用方之間溫和地傳遞錯(cuò)誤的方法即是如此。查看全部 -
errors.New
是一個(gè)很常用的函數(shù)。在Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)的代碼包中有很多由此函數(shù)創(chuàng)建出來(lái)的錯(cuò)誤值,比如os.ErrPermission
、io.EOF
等變量的值。我們可以很方便地用操作符==
來(lái)判斷一個(gè)error
類(lèi)型的值與這些變量的值是否相等,從而來(lái)確定錯(cuò)誤的具體類(lèi)別。就拿io.EOF
來(lái)說(shuō),它代表了一個(gè)信號(hào)。該信號(hào)用于通知數(shù)據(jù)讀取方已無(wú)更多數(shù)據(jù)可讀。我們?cè)诘玫竭@樣一個(gè)錯(cuò)誤的時(shí)候不應(yīng)該把它看成一個(gè)真正的錯(cuò)誤,而應(yīng)該只去結(jié)束相應(yīng)的讀取操作查看全部
舉報(bào)