欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語(yǔ)言中l(wèi)inkname的用法

 更新時(shí)間:2019年08月09日 15:30:41   作者:暮雨  
這篇文章主要介紹了go語(yǔ)言中l(wèi)inkname的用法,本文給點(diǎn)俺家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在go語(yǔ)言的源碼中,會(huì)發(fā)現(xiàn)很多,代碼只有函數(shù)簽名,卻看不到函數(shù)體,如:

// src/os/proc.go 68行
func runtime_beforeExit() // implemented in runtime

此處我們只看到函數(shù)簽名,卻看不到函數(shù)體,全局搜了一把,發(fā)現(xiàn)它的函數(shù)體卻定義在src/runtime/proc.go

// os_beforeExit is called from os.Exit(0).
//go:linkname os_beforeExit os.runtime_beforeExit
func os_beforeExit() {
  if raceenabled {
    racefini()
  }
}

它是通過go:linkname把函數(shù)簽名和函數(shù)體連接在一起的。那么我們?cè)诖a中,可以這樣實(shí)現(xiàn)么?既然庫(kù)函數(shù)中,可以這么用,那我們自己的代碼結(jié)構(gòu)中是不也可以這么用?以下通過實(shí)驗(yàn)的方式,一步一步的實(shí)現(xiàn)這樣的用法

創(chuàng)建項(xiàng)目目錄

$mkdir demo && cd demo

go mod初始化項(xiàng)目目錄

$go mod init demo

創(chuàng)建函數(shù)簽名pkg和函數(shù)體pkg

$mkdir hello
$mkdir link

編寫測(cè)試代碼

$cd hello
// 函數(shù)簽名
$vim hello.go
package hello
import (
  _ "demo/link"
)
func Hello()
// 函數(shù)體
$vim link.go
package link
import _ "unsafe"
//go:linkname helloWorld demo/hello.Hello
func helloWorld() {
  println("hello world!")
}

執(zhí)行代碼

$cd demo
vim demo.go
package main
import (
  "demo/hello"
)
func main() {
  hello.Hello()
}

編譯運(yùn)行

go run demo.go
# demo/hello
hello/hello.go:7:6: missing function body

在hello文件夾下添加aa.s的匯編文件標(biāo)示,便可以通過編譯執(zhí)行

$cd hello && touch aa.s
$go run demo.go
hello world!

總結(jié)

以上所述是小編給大家介紹的go語(yǔ)言中l(wèi)inkname的用法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Go語(yǔ)言colly框架的快速入門

    Go語(yǔ)言colly框架的快速入門

    Python?中非常知名的爬蟲框架有Scrapy,Go?中也有一些?star?數(shù)較高的爬蟲框架,colly就是其中的佼佼者,它?API?簡(jiǎn)潔,性能優(yōu)良,開箱即用,今天就來快速學(xué)習(xí)一下吧
    2023-07-07
  • Goland使用delve進(jìn)行遠(yuǎn)程調(diào)試的詳細(xì)教程

    Goland使用delve進(jìn)行遠(yuǎn)程調(diào)試的詳細(xì)教程

    網(wǎng)上給出的使用delve進(jìn)行遠(yuǎn)程調(diào)試,都需要先在本地交叉編譯或者在遠(yuǎn)程主機(jī)上編譯出可運(yùn)行的程序,然后再用delve在遠(yuǎn)程啟動(dòng)程序,本教程會(huì)將上面的步驟簡(jiǎn)化為只需要兩步,1,在遠(yuǎn)程運(yùn)行程序2,在本地啟動(dòng)調(diào)試,需要的朋友可以參考下
    2024-08-08
  • golang?字符串拼接方法對(duì)比分析

    golang?字符串拼接方法對(duì)比分析

    這篇文章主要為大家介紹了golang?字符串拼接方法對(duì)比分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Golang讀寫Excel的方法教程

    Golang讀寫Excel的方法教程

    這篇文章主要給大家介紹了關(guān)于Golang讀寫Excel的方法教程,golang操作excel利用的是Excelize,Excelize是Golang編寫的一個(gè)用來操作 Office Excel 文檔類庫(kù),基于微軟的Office OpenXML標(biāo)準(zhǔn),文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Go語(yǔ)言實(shí)現(xiàn)管理多個(gè)數(shù)據(jù)庫(kù)連接

    Go語(yǔ)言實(shí)現(xiàn)管理多個(gè)數(shù)據(jù)庫(kù)連接

    在軟件開發(fā)過程中,使用?MySQL、PostgreSQL?或其他數(shù)據(jù)庫(kù)是很常見的,由于配置和要求不同,管理這些連接可能具有挑戰(zhàn)性,下面就來和大家聊聊如何在Go中管理多個(gè)數(shù)據(jù)庫(kù)連接吧
    2023-10-10
  • go語(yǔ)言的變量定義示例詳解

    go語(yǔ)言的變量定義示例詳解

    這篇文章主要為大家介紹了go語(yǔ)言的變量定義示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語(yǔ)言多人聊天室項(xiàng)目實(shí)戰(zhàn)

    Go語(yǔ)言多人聊天室項(xiàng)目實(shí)戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言多人聊天室項(xiàng)目實(shí)戰(zhàn),實(shí)現(xiàn)單撩或多撩等多種功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Golang打包go項(xiàng)目部署到linux服務(wù)器正確方法

    Golang打包go項(xiàng)目部署到linux服務(wù)器正確方法

    這篇文章主要給大家介紹了關(guān)于Golang打包go項(xiàng)目部署到linux服務(wù)器的正確方法,Go?是一個(gè)開源的編程語(yǔ)言,它能讓構(gòu)造簡(jiǎn)單、可靠且高效的軟件變得容易,具有簡(jiǎn)潔、快速、安全,并行、有趣、開源,內(nèi)存管理、v數(shù)組安全、編譯迅速的特征,需要的朋友可以參考下
    2023-10-10
  • golang?struct?json?tag的使用以及深入講解

    golang?struct?json?tag的使用以及深入講解

    這篇文章主要給大家介紹了關(guān)于golang?struct?json?tag的使用以及深入講解,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • GO語(yǔ)言創(chuàng)建錢包并遍歷錢包(wallet)的實(shí)現(xiàn)代碼

    GO語(yǔ)言創(chuàng)建錢包并遍歷錢包(wallet)的實(shí)現(xiàn)代碼

    比特幣錢包實(shí)際上是一個(gè)密鑰對(duì),當(dāng)你安裝 一個(gè)錢包應(yīng)用,或者是使用一個(gè)比特幣客戶端來生成一個(gè)新地址是,他就會(huì)為你生成一個(gè)密鑰對(duì),今天通過本文給大家分享go語(yǔ)言遍歷錢包的相關(guān)知識(shí),一起看看吧
    2021-05-05

最新評(píng)論