本文目錄一覽:
- 1、golang項目中使用條件編譯
- 2、golang怎麼在release版本避免編譯一些代碼
- 3、golang channel select 哪個case
- 4、Golang怎樣實現像C語言那樣的枚舉類型
- 5、golang 怎麼定義可變參數的函數
golang項目中使用條件編譯
golang中沒有類似C語言中條件編譯的寫法,比如在C代碼中可以使用如下語法做一些條件編譯,結合宏定義來使用可以實現諸如按需編譯release和debug版本代碼的需求
build tags 是通過代碼注釋的形式實現的,要寫在文件的最頂端;
go build指令在編譯項目的時候會檢查每一個文件的build tags,用來決定是編譯還是跳過該文件
build tags遵循以下規則
示例:
約束此文件只能在支持kqueue的BSD系統上編譯
一個文件可能包含多行條件編譯註釋,比如:
約束該文件在linux/386 或 darwin/386平台編譯
需要注意的點
正確的寫法如下:
編譯方法:
具有_$GOOS.go後綴的go文件在編譯的時候會根據當前平台來判斷是否將該文件導入並編譯;同樣適用於處理器架構判斷 _$GOARCH.go。
兩者可以結合起來使用,形式為: _$GOOS_$GOARCH.go
示例:
文件名必須提供,如果只由後綴的文件名會被編譯器忽略,比如:
這兩個文件會被編譯器忽略,因為以下劃線開頭的文件都會被忽略
golang怎麼在release版本避免編譯一些代碼
很遺憾,Go中沒有這樣的設計,當然,目前大多數相對高級的語言都取消了宏定義的方法,雖然這樣降低了程序員對程序的掌控能力,但是這樣更容易保證程序運行的一致性。俗話說,有舍也有得吧。
對於想要實現Release版本與Develop版本體現不一樣的運行效果,可以通過定義特殊的標記常量或者變量來實現,這一點在Java等很多語言上都是一樣的。
golang channel select 哪個case
golang channel select 哪個case
對語句:
printf(“%f”,S);
在宏代換後變為:
printf(“%f”,3.1415926*y*y);
6) 習慣上宏名用大寫字母表示,以便於與變量區別。但也允許用小寫字母。
7) 可用宏定義表示數據類型,使書寫方便。
例如:
#define STU struct stu
在程序中可用STU作變量說明:
STU body[5],*p;
#define INTEGER int
在程序中即可用INTEGER作整型變量說明:
INTEGER a,b;
應注意用宏定義表示數據類型和用typedef定義數據說明符的區別。
宏定義只是簡單的字符串代換,是在預處理完成的,而typedef是在編譯時處理的,它不是作簡單的代換,而是對類型說明符重新命名。被命名的標識符具有類型定義說明的功能。
請看下面的例子:
Golang怎樣實現像C語言那樣的枚舉類型
可以用注釋符//和/**/包圍C代碼
import 逗C地 和包含C代碼之間是沒有空行的
動態庫的導入和編譯選項通過LDFLAGS、CFLAGS/CXXFLAGS來設置
還可以用pkg-config #cgo pkg-config : xxxxname
編譯宏定義指定#cgo CFLAGS: -DNDEBUG -DXXXX=2
今天先看看go和c之間的類型轉換:
char — C.char — byte
signed char — C.schar — int8
unsigned char — C.uchar — uint8
short int — C.short — int16
short unsigned int — C.ushort — uint16
golang 怎麼定義可變參數的函數
golang定義可變參數的函數方法是:
—- 採用ANSI標準形式時,參數個數可變的函數的原型聲明是:
type funcname(type para1, type para2, …)
—- 這種形式至少需要一個普通的形式參數,後面的省略號不表示省略,而是函數原型的一部分。type是函數返回值和形式參數的類型。
—- 採用與UNIX System V兼容的聲明方式時,參數個數可變的函數原型是:
type funcname(va_alist)
va_dcl
—- 這種形式不需要提供任何普通的形式參數。
type是函數返回值的類型。va_dcl是對函數原型聲明中參數va_alist的詳細聲明,實際是一個宏定義,對不同的硬件平台採用不同的類型來定義,但在最後都包括了一個分號。因此va_dcl後不再需要加上分號了。va_dcl在代碼中必須原樣給出。va_alist在VC中可以原樣給出,也可以略去。
此外,採用頭文件stdarg.h編寫的程序是符合ANSI標準的,可以在各種操作系統和硬件上運行;而採用頭文件varargs.h的方式僅僅是為了與以前的程序兼容。所以建議使用前者。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187965.html