一圖解決疑問。功能路徑是 settingsFile and code TemplatesGo File 。其他文件也一樣。
“真誠服務(wù),讓網(wǎng)絡(luò)創(chuàng)造價值”是我們的服務(wù)理念,創(chuàng)新互聯(lián)團(tuán)隊10年如一日始終堅持在網(wǎng)站建設(shè)領(lǐng)域,為客戶提供優(yōu)質(zhì)服。不管你處于什么行業(yè),助你輕松跨入“互聯(lián)網(wǎng)+”時代,PC網(wǎng)站+手機(jī)網(wǎng)站+公眾號+小程序開發(fā)。
功能路徑是 settingsLive Templates 。
使用方法是在編輯窗口中敲擊 lgh (可改),等待提示后按 tab 鍵即可。
Java是一門較為成熟的語言,相對于C++要簡單的多,C++里沒有內(nèi)存回收,所以比較麻煩,Java加入了內(nèi)存自動回收,簡單是簡單,卻變慢了,go語言是一門新興的語言,現(xiàn)在版本是1.9 ? go語言的性能比Java要好,但由于出現(xiàn)晚,資料較Java少,有些Java的功能go也沒有,并且有許多的軟件是支持Java但支持go的很少.所以在短期內(nèi)Java是比go通用的
C語言的最大的優(yōu)勢是時間性能好,只比匯編慢20%~30%,C++最大的優(yōu)勢是快且面向?qū)ο?Java最大的優(yōu)勢是垃圾回收機(jī)制,GO語言的目標(biāo)是具備以上三者的優(yōu)勢
一直很好奇GO注釋文件中的信息是如何得到的,終于在《The Gene Ontology Handbook》中找到了答案。
GO的原始文件可以分為兩部分:ontology和association files。
該文件以obo格式儲存,每個詞條都以樹狀結(jié)構(gòu)表示著和其他詞條的關(guān)系,具體內(nèi)容可以從 GO網(wǎng)站 中找到,其中的元素和邏輯關(guān)系可以簡單參考上幾篇文章。主要編輯工具有g(shù)o-basic、go和go-plus三個。
這部分文件主要是關(guān)于GO詞條的具體功能信息,以及相關(guān)的支撐信息,以GAF或GPAD格式儲存。
目前對基因的注釋主要有兩種手段:人工注釋和機(jī)器注釋。
人工注釋由專業(yè)人士(biocurators)通過閱讀,提取和轉(zhuǎn)化文獻(xiàn)中的實驗結(jié)果來對基因進(jìn)行注釋。人工注釋費時費力,但他們的努力非常重要,因為人工注釋的準(zhǔn)確性是其他注釋的基石,目前有20個團(tuán)隊為GO的人工注釋貢獻(xiàn)力量。
機(jī)器注釋主要兩大類方法:根據(jù)序列進(jìn)行注釋和文本挖掘的方法注釋。
1、根據(jù)序列信息進(jìn)行注釋:
annotation transfers from Homologous proteins
annotation transfers from Orthologous proteins
annotation transfers from Protein families
2、文本挖掘注釋
Automatic text categorization
Lexical approaches
k-Nearest neighbors
Properties of Lexical and k-NN categorizers
Inter-annotator agreement
每種方法的具體解釋參考《The Gene Ontology Handbook》的相關(guān)章節(jié)。
Go語言中沒有“類”的概念,也不支持“類”的繼承等面向?qū)ο蟮母拍?。Go語言中通過結(jié)構(gòu)體的內(nèi)嵌再配合接口比面向?qū)ο缶哂懈叩臄U(kuò)展性和靈活性。
自定義類型
在Go語言中有一些基本的數(shù)據(jù)類型,如string、整型、浮點型、布爾等數(shù)據(jù)類型, Go語言中可以使用type關(guān)鍵字來定義自定義類型。
自定義類型是定義了一個全新的類型。我們可以基于內(nèi)置的基本類型定義,也可以通過struct定義。例如:
通過Type關(guān)鍵字的定義,MyInt就是一種新的類型,它具有int的特性。
類型別名
類型別名是Go1.9版本添加的新功能。
類型別名規(guī)定:TypeAlias只是Type的別名,本質(zhì)上TypeAlias與Type是同一個類型。就像一個孩子小時候有小名、乳名,上學(xué)后用學(xué)名,英語老師又會給他起英文名,但這些名字都指的是他本人。
type TypeAlias = Type
我們之前見過的rune和byte就是類型別名,他們的定義如下:
類型定義和類型別名的區(qū)別
類型別名與類型定義表面上看只有一個等號的差異,我們通過下面的這段代碼來理解它們之間的區(qū)別。
結(jié)果顯示a的類型是main.NewInt,表示main包下定義的NewInt類型。b的類型是int。MyInt類型只會在代碼中存在,編譯完成時并不會有MyInt類型。
Go語言中的基礎(chǔ)數(shù)據(jù)類型可以表示一些事物的基本屬性,但是當(dāng)我們想表達(dá)一個事物的全部或部分屬性時,這時候再用單一的基本數(shù)據(jù)類型明顯就無法滿足需求了,Go語言提供了一種自定義數(shù)據(jù)類型,可以封裝多個基本數(shù)據(jù)類型,這種數(shù)據(jù)類型叫結(jié)構(gòu)體,英文名稱struct。 也就是我們可以通過struct來定義自己的類型了。
Go語言中通過struct來實現(xiàn)面向?qū)ο蟆?/p>
結(jié)構(gòu)體的定義
使用type和struct關(guān)鍵字來定義結(jié)構(gòu)體,具體代碼格式如下:
其中:
舉個例子,我們定義一個Person(人)結(jié)構(gòu)體,代碼如下:
同樣類型的字段也可以寫在一行,
這樣我們就擁有了一個person的自定義類型,它有name、city、age三個字段,分別表示姓名、城市和年齡。這樣我們使用這個person結(jié)構(gòu)體就能夠很方便的在程序中表示和存儲人信息了。
語言內(nèi)置的基礎(chǔ)數(shù)據(jù)類型是用來描述一個值的,而結(jié)構(gòu)體是用來描述一組值的。比如一個人有名字、年齡和居住城市等,本質(zhì)上是一種聚合型的數(shù)據(jù)類型
結(jié)構(gòu)體實例化
只有當(dāng)結(jié)構(gòu)體實例化時,才會真正地分配內(nèi)存。也就是必須實例化后才能使用結(jié)構(gòu)體的字段。
基本實例化
舉個例子:
我們通過.來訪問結(jié)構(gòu)體的字段(成員變量),例如p1.name和p1.age等。
匿名結(jié)構(gòu)體
在定義一些臨時數(shù)據(jù)結(jié)構(gòu)等場景下還可以使用匿名結(jié)構(gòu)體。
創(chuàng)建指針類型結(jié)構(gòu)體
我們還可以通過使用new關(guān)鍵字對結(jié)構(gòu)體進(jìn)行實例化,得到的是結(jié)構(gòu)體的地址。 格式如下:
從打印的結(jié)果中我們可以看出p2是一個結(jié)構(gòu)體指針。
需要注意的是在Go語言中支持對結(jié)構(gòu)體指針直接使用.來訪問結(jié)構(gòu)體的成員。
取結(jié)構(gòu)體的地址實例化
使用對結(jié)構(gòu)體進(jìn)行取地址操作相當(dāng)于對該結(jié)構(gòu)體類型進(jìn)行了一次new實例化操作。
p3.name = "七米"其實在底層是(*p3).name = "七米",這是Go語言幫我們實現(xiàn)的語法糖。
結(jié)構(gòu)體初始化
沒有初始化的結(jié)構(gòu)體,其成員變量都是對應(yīng)其類型的零值。
使用鍵值對初始化
使用鍵值對對結(jié)構(gòu)體進(jìn)行初始化時,鍵對應(yīng)結(jié)構(gòu)體的字段,值對應(yīng)該字段的初始值。
也可以對結(jié)構(gòu)體指針進(jìn)行鍵值對初始化,例如:
當(dāng)某些字段沒有初始值的時候,該字段可以不寫。此時,沒有指定初始值的字段的值就是該字段類型的零值。
使用值的列表初始化
初始化結(jié)構(gòu)體的時候可以簡寫,也就是初始化的時候不寫鍵,直接寫值:
使用這種格式初始化時,需要注意:
結(jié)構(gòu)體內(nèi)存布局
結(jié)構(gòu)體占用一塊連續(xù)的內(nèi)存。
輸出:
【進(jìn)階知識點】關(guān)于Go語言中的內(nèi)存對齊推薦閱讀:在 Go 中恰到好處的內(nèi)存對齊
面試題
請問下面代碼的執(zhí)行結(jié)果是什么?
構(gòu)造函數(shù)
Go語言的結(jié)構(gòu)體沒有構(gòu)造函數(shù),我們可以自己實現(xiàn)。 例如,下方的代碼就實現(xiàn)了一個person的構(gòu)造函數(shù)。 因為struct是值類型,如果結(jié)構(gòu)體比較復(fù)雜的話,值拷貝性能開銷會比較大,所以該構(gòu)造函數(shù)返回的是結(jié)構(gòu)體指針類型。
調(diào)用構(gòu)造函數(shù)
方法和接收者
Go語言中的方法(Method)是一種作用于特定類型變量的函數(shù)。這種特定類型變量叫做接收者(Receiver)。接收者的概念就類似于其他語言中的this或者 self。
方法的定義格式如下:
其中,
舉個例子:
方法與函數(shù)的區(qū)別是,函數(shù)不屬于任何類型,方法屬于特定的類型。
指針類型的接收者
指針類型的接收者由一個結(jié)構(gòu)體的指針組成,由于指針的特性,調(diào)用方法時修改接收者指針的任意成員變量,在方法結(jié)束后,修改都是有效的。這種方式就十分接近于其他語言中面向?qū)ο笾械膖his或者self。 例如我們?yōu)镻erson添加一個SetAge方法,來修改實例變量的年齡。
調(diào)用該方法:
值類型的接收者
當(dāng)方法作用于值類型接收者時,Go語言會在代碼運行時將接收者的值復(fù)制一份。在值類型接收者的方法中可以獲取接收者的成員值,但修改操作只是針對副本,無法修改接收者變量本身。
什么時候應(yīng)該使用指針類型接收者
任意類型添加方法
在Go語言中,接收者的類型可以是任何類型,不僅僅是結(jié)構(gòu)體,任何類型都可以擁有方法。 舉個例子,我們基于內(nèi)置的int類型使用type關(guān)鍵字可以定義新的自定義類型,然后為我們的自定義類型添加方法。
注意事項: 非本地類型不能定義方法,也就是說我們不能給別的包的類型定義方法。
結(jié)構(gòu)體的匿名字段
匿名字段默認(rèn)采用類型名作為字段名,結(jié)構(gòu)體要求字段名稱必須唯一,因此一個結(jié)構(gòu)體中同種類型的匿名字段只能有一個。
嵌套結(jié)構(gòu)體
一個結(jié)構(gòu)體中可以嵌套包含另一個結(jié)構(gòu)體或結(jié)構(gòu)體指針。
嵌套匿名結(jié)構(gòu)體
當(dāng)訪問結(jié)構(gòu)體成員時會先在結(jié)構(gòu)體中查找該字段,找不到再去匿名結(jié)構(gòu)體中查找。
嵌套結(jié)構(gòu)體的字段名沖突
嵌套結(jié)構(gòu)體內(nèi)部可能存在相同的字段名。這個時候為了避免歧義需要指定具體的內(nèi)嵌結(jié)構(gòu)體的字段。
結(jié)構(gòu)體的“繼承”
Go語言中使用結(jié)構(gòu)體也可以實現(xiàn)其他編程語言中面向?qū)ο蟮睦^承。
結(jié)構(gòu)體字段的可見性
結(jié)構(gòu)體中字段大寫開頭表示可公開訪問,小寫表示私有(僅在定義當(dāng)前結(jié)構(gòu)體的包中可訪問)。
結(jié)構(gòu)體與JSON序列化
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時也易于機(jī)器解析和生成。JSON鍵值對是用來保存JS對象的一種方式,鍵/值對組合中的鍵名寫在前面并用雙引號""包裹,使用冒號:分隔,然后緊接著值;多個鍵值之間使用英文,分隔。
結(jié)構(gòu)體標(biāo)簽(Tag)
Tag是結(jié)構(gòu)體的元信息,可以在運行的時候通過反射的機(jī)制讀取出來。 Tag在結(jié)構(gòu)體字段的后方定義,由一對反引號包裹起來,具體的格式如下:
`key1:"value1" key2:"value2"`
結(jié)構(gòu)體標(biāo)簽由一個或多個鍵值對組成。鍵與值使用冒號分隔,值用雙引號括起來。鍵值對之間使用一個空格分隔。 注意事項: 為結(jié)構(gòu)體編寫Tag時,必須嚴(yán)格遵守鍵值對的規(guī)則。結(jié)構(gòu)體標(biāo)簽的解析代碼的容錯能力很差,一旦格式寫錯,編譯和運行時都不會提示任何錯誤,通過反射也無法正確取值。例如不要在key和value之間添加空格。
例如我們?yōu)镾tudent結(jié)構(gòu)體的每個字段定義json序列化時使用的Tag:
Ontology 首先是出現(xiàn)于哲學(xué)領(lǐng)域的一個詞匯,后來廣泛用于計算機(jī)領(lǐng)域,發(fā)揮了很重要的作用,再后來這個概念被引入生物領(lǐng)域。
gene Ontology 是生物中Ontology中一個重要應(yīng)用。go項目最初是由研究三種模式生物(果蠅、小鼠和酵母)基因組的研究者共同發(fā)起。是生物信息分析中很重要的一個方法
go是在生物領(lǐng)域應(yīng)用非常廣,可以幫助生物學(xué)家對基因產(chǎn)物進(jìn)行準(zhǔn)確的定義(功能、位置),節(jié)省時間。
因為在最開始的時候,生物學(xué)家們更多是專注于自己研究的物種/課題,而且每個生物學(xué)家對功能等的定義是存在差異的,導(dǎo)致不同實驗室/物種不能實現(xiàn)直接的對接(比如A物種內(nèi)的x基因的功能使用的是a這個詞匯進(jìn)行注釋,而B物種內(nèi)的x基因的功能卻使用的是與a同義的詞匯b進(jìn)行注釋,這種情況計算機(jī)無法識別),就像講兩種語言的人,無法直接進(jìn)行語言交流。這種情況導(dǎo)致的問題是,出現(xiàn)了一種阻礙,讓問題復(fù)雜化了。所以就有了Ontology在生物領(lǐng)域中的應(yīng)用,實現(xiàn)“書同文”。
go定義了基因/基因產(chǎn)物的功能(通過術(shù)語)且定義了它們各自之間功能是怎樣聯(lián)系的(關(guān)系)。它組成了一個具有大量term的詞匯庫,并定義各種term之間的關(guān)系(is_a part_of R)。
GO通過三個方面的術(shù)語對基因/基因產(chǎn)物的功能進(jìn)行描述:分子功能(molecular function) -由基因/基因產(chǎn)物行使的分子水平上的功能; 細(xì)胞組件(cellular component)-基因/基因產(chǎn)物產(chǎn)生功能時其在細(xì)胞結(jié)構(gòu)上的位置;生物學(xué)過程(biological process)-在哪個生物學(xué)通路/生物過程發(fā)揮作用。
目前,GO 注釋主要有兩種方法:
(1)序列相似性比對(BLAST):例如blast2go(將blast結(jié)果轉(zhuǎn)化為GO注釋)
(2)結(jié)構(gòu)域相似性比對(InterProScan)
blast2go的本地化教程:
在blast2go軟件正確安裝的情況下,使用blast2go進(jìn)行g(shù)o注釋,出現(xiàn)無法得到注釋結(jié)果的問題:
另外還有可能出錯的原因是,blast2go無法識別blast高的版本號,當(dāng)使用高版本的blast的時候,直接將版本號給修改為低版本的就行了,例如(BLASTX 2.2.25+)
GO 的圖形是一個有向無環(huán)圖
Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎(chǔ)的讀者快速入門,也適合工作多年的程序員查閱知識點。
Go 語言
這套教程在講解一些知識點時,將 Go 語言和其他多種語言進(jìn)行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗就可以輕松搞定。
Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發(fā)布。Go 是非常年輕的一門語言,它的主要目標(biāo)是“兼具 Python 等動態(tài)語言的開發(fā)速度和 C/C++ 等編譯型語言的性能與安全性”。
Go語言是編程語言設(shè)計的又一次嘗試,是對類C語言的重大改進(jìn),它不但能讓你訪問底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡單、并發(fā)性好、語言設(shè)計良好、執(zhí)行性能好”等優(yōu)勢,目前國內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項目。Go語言有時候被描述為“C 類似語言”,或者是“21 世紀(jì)的C語言”。Go 從C語言繼承了相似的表達(dá)式語法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語言一直所看中的編譯后機(jī)器碼的運行效率以及和現(xiàn)有操作系統(tǒng)的無縫適配。
因為Go語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實現(xiàn)多態(tài)性。Go語言有一個清晰易懂的輕量級類型系統(tǒng),在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。
此外,很多重要的開源項目都是使用Go語言開發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時,編譯器檢查錯誤、優(yōu)化性能并輸出可在不同平臺上運行的二進(jìn)制文件。要創(chuàng)建并運行 Go 程序,程序員必須執(zhí)行如下步驟。
使用文本編輯器創(chuàng)建 Go 程序;
保存文件;編譯程序;運行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨安裝編譯器。
鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開展的“智慧學(xué)習(xí)工場2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專業(yè)”試點工作站。專業(yè)站立足為學(xué)生提供多樣化成長路徑,推進(jìn)專業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。
標(biāo)題名稱:go語言沒有注解,go語言 注解
瀏覽地址:http://chinadenli.net/article42/hegiec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、商城網(wǎng)站、Google、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)