日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

《Go程序设计语言》- 第3章:基本数据

發(fā)布時(shí)間:2023/12/2 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Go程序设计语言》- 第3章:基本数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

    • 前言
    • 章節(jié)開(kāi)篇知識(shí)
    • 整數(shù)
    • 浮點(diǎn)數(shù)
    • 復(fù)數(shù)
    • 布爾值
    • 字符串
    • 常量

前言

本專(zhuān)欄是筆者在學(xué)習(xí)《Go程序設(shè)計(jì)語(yǔ)言》這本書(shū)時(shí),對(duì)每個(gè)章節(jié)認(rèn)為較為重要(容易忘記👻)的知識(shí)點(diǎn)記錄的筆記,其中也會(huì)有少量的思考👀, 現(xiàn)整理成博客分享出來(lái)。

??注意??:本專(zhuān)欄不是詳細(xì)的知識(shí)講解,只是碎片的知識(shí)條目,或可作為Go知識(shí)點(diǎn)查漏補(bǔ)缺的小工具~

章節(jié)開(kāi)篇知識(shí)

  • Go有四大數(shù)據(jù)類(lèi)型:基礎(chǔ)類(lèi)型、聚合類(lèi)型、引用類(lèi)型、接口類(lèi)型
  • 基礎(chǔ)類(lèi)型包括數(shù)字,字符串,布爾型;聚合類(lèi)型包括數(shù)組和結(jié)構(gòu)體;引用類(lèi)型包括函數(shù)、map、channel、slice、指針
  • 整數(shù)

  • 整數(shù)有8,16,32,64位有無(wú)符號(hào),加上不指定大小的int/uint,以及rune(int32)、byte(uint8)、uintptr;

  • int/uint是平臺(tái)上運(yùn)算效率最高的值,二者大小相同,都是32或64位,但這取決于編譯器

  • rune用來(lái)存放Unicode編碼,byte用來(lái)存放字節(jié),uintptr大小不明確,但足以存放完整指針,僅用于底層編程;

  • Go語(yǔ)言取模余數(shù)的符號(hào)總是與被除數(shù)一致;整數(shù)除法舍棄小數(shù)部分;溢出時(shí)無(wú)提示丟棄高位溢出部分;

  • 位運(yùn)算符:& | ^ &^;&^是位清空運(yùn)算符;^作為二元運(yùn)算符時(shí)是位異或,一元運(yùn)算符時(shí)是位取反;

  • %08b用來(lái)輸出8位二進(jìn)制數(shù)據(jù);

  • 位移運(yùn)算符<<和>>注意:>>會(huì)按照符號(hào)位來(lái)填補(bǔ)空位,即負(fù)數(shù)補(bǔ)1正數(shù)補(bǔ)0;如int8類(lèi)型的-9>>1 == -5:

    var a int8 = -9 // -00001001,補(bǔ)碼 11110111 b := a >> 1 // 補(bǔ)碼右移1位: 1111 1011,計(jì)算原碼: -0000 0101 結(jié)果 -5
  • 為什么len()函數(shù)返回有符號(hào)整數(shù)?這樣才能倒序遍歷,否則i >= 0將恒成立;

  • 浮點(diǎn)型轉(zhuǎn)整數(shù)將趨零截尾

  • 如果轉(zhuǎn)換超出了目標(biāo)類(lèi)型的取值范圍,其行為依賴(lài)具體實(shí)現(xiàn);應(yīng)盡量避免這種轉(zhuǎn)換

  • 浮點(diǎn)數(shù)

  • 兩種浮點(diǎn)數(shù):float32和float64;math包給出了極限值math.MaxFloat32;
  • 十進(jìn)制下:float32有效數(shù)字約6位,float64有效數(shù)字約15位;
  • %g占位符可以選擇%e %f中更緊湊的打印方式;
  • 與math.NaN()的比較總是不成立;
  • 復(fù)數(shù)

  • 兩種復(fù)數(shù):complex64和complex128,分別由兩種浮點(diǎn)數(shù)構(gòu)成;通過(guò)內(nèi)置complex()函數(shù)創(chuàng)建復(fù)數(shù),通過(guò)real() imag()函數(shù)提取復(fù)數(shù)的實(shí)部和虛部;
  • 在十進(jìn)制整數(shù)/浮點(diǎn)數(shù)后面接i就變成了復(fù)數(shù),此時(shí)實(shí)部為0;
  • 布爾值

  • && ||運(yùn)算符可能短路;
  • 布爾值無(wú)法隱式轉(zhuǎn)換成數(shù)值0或1;
  • 字符串

  • 字符串是不可變的字節(jié)序列,所以s[0] = 'A'會(huì)編譯錯(cuò)誤;len()函數(shù)返回字節(jié)數(shù)而不是字符數(shù);
  • Go源文件按照UTF-8編碼;UTF-8每個(gè)字符占1~4字節(jié),unicode/utf8包提供了相關(guān)接口;
  • UTF-32或UCS-4每個(gè)Unicode碼點(diǎn)占32位;
  • 原生字符串字面量的書(shū)寫(xiě)形式是反引號(hào);其中轉(zhuǎn)義序列不起作用,實(shí)質(zhì)內(nèi)容與字面寫(xiě)法嚴(yán)格一致;唯一處理是回車(chē)符將被刪除(換行符會(huì)被保留);原生字面量適用于HTML模板、JSON字符串、命令行提示信息等;
  • 字符串字面量可以表示UTF-8字符:\uhhhh表示16位碼點(diǎn)值,\Uhhhhhhhh表示32位碼點(diǎn)值;注意后者是大寫(xiě)的U
  • range循環(huán)對(duì)于字符串隱式采用UTF-8解碼,utf8.RuneCountInStrings(s)可以得到字符串中UTF-8字符的數(shù)量;len(s)得到的是byte的數(shù)量;C++中的std::string::size()獲取的也是char的數(shù)量
  • 如果UTF-8解碼器讀入一個(gè)不合理字節(jié),都會(huì)產(chǎn)生一個(gè)\uFFFD替換它;
  • 可以使用[]rune轉(zhuǎn)換UTF-8字符串,獲取Unicode碼點(diǎn)序列;
  • 處理字符串的標(biāo)準(zhǔn)包:strings, bytes, strconv, unicode;增量創(chuàng)建字符串,推薦采用bytes.Buffer;
  • 處理文件路徑:path/filepath;
  • []bytes(str)與string(b)轉(zhuǎn)換時(shí),會(huì)復(fù)制一份以保證原串不變;
  • 整數(shù)轉(zhuǎn)字符串:strconv.Itoa():integer to ascii;或者fmt.Sprintf();字符串轉(zhuǎn)整數(shù)可以strconv.ParseInt();
  • 常量

  • 常量是一種表達(dá)式,保證在編譯階段就確定值;所有常量本質(zhì)上都屬于基本類(lèi)型:布爾、字符串、數(shù)字;
  • 可以聲明一系列常量,通過(guò)const (),在括號(hào)中聲明;如果聲明a,b,c,只對(duì)a賦值如4,則b,c均為4;
  • iota遞增常量,從0開(kāi)始取值,逐項(xiàng)加1;iota可用于表達(dá)式,如1 << iota,iota + 100等;
  • 無(wú)類(lèi)型常量的算術(shù)精度可達(dá)到256位,聲明無(wú)類(lèi)型常量:const a = 1.11111111;只有常量才能聲明成無(wú)類(lèi)型;

  • 如有錯(cuò)誤 ? ,歡迎指正 ??~

    如有收獲 🍗,可以考慮點(diǎn)贊👍/評(píng)論💬/收藏??/關(guān)注👀,大家共同進(jìn)步~


    總結(jié)

    以上是生活随笔為你收集整理的《Go程序设计语言》- 第3章:基本数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。