重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
const NUM int = 100
專注于為中小企業提供網站設計、成都網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業華安免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了上千企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
for i := 0; i NUM; i += 1 {
rand.Seed(int64(i))
fmt.Printf("%d\t", rand.Int63n(int64(NUM)))
}
其實在循環里面這點時間間隔,納秒也是跟不上的。
還有,你用sleep的方法肯定是不能接受的!??!
GO是編譯性語言,所以函數的順序是無關緊要的,為了方便閱讀,建議入口函數 main 寫在最前面,其余函數按照功能需要進行排列
GO的函數 不支持嵌套,重載和默認參數
GO的函數 支持 無需聲明變量,可變長度,多返回值,匿名,閉包等
GO的函數用 func 來聲明,且左大括號 { 不能另起一行
一個簡單的示例:
輸出為:
參數:可以傳0個或多個值來供自己用
返回:通過用 return 來進行返回
輸出為:
上面就是一個典型的多參數傳遞與多返回值
對例子的說明:
按值傳遞:是對某個變量進行復制,不能更改原變量的值
引用傳遞:相當于按指針傳遞,可以同時改變原來的值,并且消耗的內存會更少,只有4或8個字節的消耗
在上例中,返回值 (d int, e int, f int) { 是進行了命名,如果不想命名可以寫成 (int,int,int){ ,返回的結果都是一樣的,但要注意:
當返回了多個值,我們某些變量不想要,或實際用不到,我們可以使用 _ 來補位,例如上例的返回我們可以寫成 d,_,f := test(a,b,c) ,我們不想要中間的返回值,可以以這種形式來舍棄掉
在參數后面以 變量 ... type 這種形式的,我們就要以判斷出這是一個可變長度的參數
輸出為:
在上例中, strs ...string 中, strs 的實際值是b,c,d,e,這就是一個最簡單的傳遞可變長度的參數的例子,更多一些演變的形式,都非常類似
在GO中 defer 關鍵字非常重要,相當于面相對像中的析構函數,也就是在某個函數執行完成后,GO會自動這個;
如果在多層循環中函數里,都定義了 defer ,那么它的執行順序是先進后出;
當某個函數出現嚴重錯誤時, defer 也會被調用
輸出為
這是一個最簡單的測試了,當然還有更復雜的調用,比如調試程序時,判斷是哪個函數出了問題,完全可以根據 defer 打印出來的內容來進行判斷,非??焖?,這種留給你們去實現
一個函數在函數體內自己調用自己我們稱之為遞歸函數,在做遞歸調用時,經常會將內存給占滿,這是非常要注意的,常用的比如,快速排序就是用的遞歸調用
本篇重點介紹了GO函數(func)的聲明與使用,下一篇將介紹GO的結構 struct
package?main
import?(
"fmt"
"math/rand"
"time"
)
func?main()?{
for?i?:=?0;?i??20;?i++?{
r?:=?rand.New(rand.NewSource(time.Now().UnixNano()))
//rand.Seed(time.Now().UnixNano())?//以當前納秒數作為隨機數種子
n?:=?r.Int63()
fmt.Println(n)
}
}
查了下這樣可以
不知道他內部怎么實現的 ? unixnano
math/rand 中的所有整數函數都生成非負數.
示例 main.go
執行
同理,需要int64 int32類型的隨機數只要修改隨機函數
但是需要注意 math/rand 幾個函數的取值區間!如Intn的范圍[0, n)。[0,20),20會取不到
我自己的需求這樣寫已足夠
#include stdio.h
#include stdlib.h
#include time.h //用到了time函數
int main()
{ int i,number;
srand((unsigned) time(NULL)); //用時間做種,每次產生隨機數不一樣
for (i=0; i50; i++)
{
number = rand() % 101; //產生0-100的隨機數
printf("%d ", number);
}
return 0;
}
返回x和y中最大值,特例如下:
返回x和y中最小值,特例如下:
返回一個標準化小數frac和2的整型指數exp,滿足f == frac * 2**exp,且0.5 = Abs(frac) 1;特例如下:
第一類貝塞爾函數,n階。特例如下:
MaxBase是字符串轉換函數接受的最大進制。
創建一個值為x的*Int。
將z設為-x并返回z。
返回一個uint32類型的非負的32位偽隨機數。
返回一個取值范圍在[0,n)的偽隨機int值,如果n=0會panic。