一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java轉(zhuǎn)Go之初體驗(yàn)

Android編程精選 ? 來源:CSDN ? 2023-07-03 10:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、萬能之Hello World 開啟go的大門

直接上代碼

packagemain//表明包

import"fmt"http://導(dǎo)入包fmt控制輸入輸出感覺和java的System.out和Scanner有點(diǎn)像

funcmain(){
fmt.Println("Hello Go world。");//進(jìn)入這個(gè)世界了
}

輸出結(jié)果:

4b0572e6-1803-11ee-962d-dac502259ad0.png

是不是感覺還可以。

二、Go語(yǔ)言環(huán)境安裝

4b19a0ae-1803-11ee-962d-dac502259ad0.png

我安裝的是windows版的 雙擊安裝選擇目錄 全程輕松隨意 比想象中簡(jiǎn)單

4b968470-1803-11ee-962d-dac502259ad0.png

配置系統(tǒng)變量,然后就可以開始玩了

4bfe97e0-1803-11ee-962d-dac502259ad0.png

三、基礎(chǔ)語(yǔ)法

行分割符:不需要像java一眼每句之后都加一個(gè);表明結(jié)束 每一行都是單獨(dú)的一句 如果非要把幾行語(yǔ)句寫在一起 就需要加分號(hào)了

注釋 : //單行注釋
/*
aaa
bbb
*/

標(biāo)識(shí)符 標(biāo)識(shí)符用來命名變量、類型等程序?qū)嶓w。一個(gè)標(biāo)識(shí)符實(shí)際上就是一個(gè)或是多個(gè)字母(AZ和az)數(shù)字(0~9)、下劃線_組成的序列,但是第一個(gè)字符必須是字母或下劃線而不能是數(shù)字。

字符串連接 直接用+號(hào)即可連接 這點(diǎn)倒是和java挺像的 但是java里直接用加號(hào)連接的性能不是很好 不知道go語(yǔ)言中是否有相類似的編譯流程

關(guān)鍵字

4c16e994-1803-11ee-962d-dac502259ad0.png

預(yù)定義標(biāo)識(shí)符

4c2bde08-1803-11ee-962d-dac502259ad0.png

四、數(shù)據(jù)類型

4c455de2-1803-11ee-962d-dac502259ad0.png

首先一點(diǎn),給我印象比較深的就是 對(duì)數(shù)字類型添加了很多的包裝,在不同的應(yīng)用范圍內(nèi)使用不同的數(shù)據(jù)類型 例如

int8 有符號(hào) 8 位整型 (-128 到 127)

int16 有符號(hào) 16 位整型 (-32768 到 32767)

int32 有符號(hào) 32 位整型 (-2147483648 到 2147483647)

int64 有符號(hào) 64 位整型 (-9223372036854775808 到 9223372036854775807)

這個(gè)給人感覺就是對(duì)使用著感覺 有了更高的要求 像java就是int Integer BigInteger這幾種包裝好的用就行了

當(dāng)然這樣要求的更細(xì)致 感覺編譯的時(shí)候 就越容易控制 如果方方面面都這么細(xì)致的話 運(yùn)行速度上就可以提高不少的

五、聲明變量

var identifier type 例:var a int;

var identifier1,identifier2 type 例:var a,b string;

指定變量類型,如果沒有初始化,則變量默認(rèn)為零值
數(shù)值類型(包括complex64/128)為 0
布爾類型為 false
字符串為 “”(空字符串)
以下幾種類型為 nil:
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口

根據(jù)值自行判定變量類型 例:var d = true (這點(diǎn)就有點(diǎn)像js了)

省略 var, 注意 := 左側(cè)如果沒有聲明新的變量,就產(chǎn)生編譯錯(cuò)誤,格式:v\_name := value 例:f := “Runoob”

多變量聲明

//類型相同多個(gè)變量,非全局變量
varvname1,vname2,vname3type
vname1,vname2,vname3=v1,v2,v3

//和python很像,不需要顯示聲明類型,自動(dòng)推斷
varvname1,vname2,vname3=v1,v2,v3

//出現(xiàn)在:=左側(cè)的變量不應(yīng)該是已經(jīng)被聲明過的,否則會(huì)導(dǎo)致編譯錯(cuò)誤
vname1,vname2,vname3:=v1,v2,v3


//這種因式分解關(guān)鍵字的寫法一般用于聲明全局變量
var(
vname1v_type1
vname2v_type2
)

六、常量

const 定義常量關(guān)鍵字 目前感覺和final static 類似

定義了之后就不能改了 如果代碼里面改了的話 會(huì)報(bào) cannot assign to LENGTH 錯(cuò)誤

4c6f1204-1803-11ee-962d-dac502259ad0.png

下來就發(fā)現(xiàn)一個(gè)神奇懂東西 iota

iota,特殊常量,可以認(rèn)為是一個(gè)可以被編譯器修改的常量。

iota 在 const關(guān)鍵字出現(xiàn)時(shí)將被重置為 0(const 內(nèi)部的第一行之前),const 中每新增一行常量聲明將使 iota 計(jì)數(shù)一次(iota 可理解為 const 語(yǔ)句塊中的行索引)。

4c8b09be-1803-11ee-962d-dac502259ad0.png

枚舉自增計(jì)數(shù)器 感覺是這么個(gè)意思

運(yùn)算符

4ca9cbe2-1803-11ee-962d-dac502259ad0.png
4cc3c042-1803-11ee-962d-dac502259ad0.png
4ce48d90-1803-11ee-962d-dac502259ad0.png
4d02a582-1803-11ee-962d-dac502259ad0.png

&這個(gè)就是只有兩個(gè)1的時(shí)候才是1其余都是0

|這個(gè)是只有兩個(gè)0的時(shí)候才是0其余都是1和與剛好相反

^這個(gè)簡(jiǎn)單粗暴兩個(gè)相同的數(shù)字是0不同的時(shí)候是1

4d191dda-1803-11ee-962d-dac502259ad0.png
4d481ea0-1803-11ee-962d-dac502259ad0.png

這個(gè)<<=后面的幾個(gè)都還有點(diǎn)驚艷到我了 厲害厲害

4d61ebbe-1803-11ee-962d-dac502259ad0.png

這兩個(gè)優(yōu)點(diǎn)沒太看懂 敲個(gè)代碼試一下

packagemain

import"fmt"

funcmain(){
varastring="abc"
varptr*string=&a
fmt.Printf("第1行-a變量類型為=%T
",a);
fmt.Printf("第2行-ptr變量類型為=%T
",ptr);
fmt.Println(*ptr)
fmt.Println(ptr)
}

4d907902-1803-11ee-962d-dac502259ad0.png

加*輸出的是內(nèi)容 不加輸出的就是地址 這個(gè)指針的概念 java里是沒有的

4da29d6c-1803-11ee-962d-dac502259ad0.png

七、條件語(yǔ)句

4dbac63a-1803-11ee-962d-dac502259ad0.png

這個(gè)select語(yǔ)句真的是看的我欲生欲死

以下描述了 select 語(yǔ)句的語(yǔ)法:

每個(gè) case 都必須是一個(gè)通信

所有 channel 表達(dá)式都會(huì)被求值

所有被發(fā)送的表達(dá)式都會(huì)被求值

如果任意某個(gè)通信可以進(jìn)行,它就執(zhí)行,其他被忽略。

如果有多個(gè) case 都可以運(yùn)行,Select 會(huì)隨機(jī)公平地選出一個(gè)執(zhí)行。其他不會(huì)執(zhí)行。

否則:

如果有 default 子句,則執(zhí)行該語(yǔ)句。

如果沒有 default 子句,select 將阻塞,直到某個(gè)通信可以運(yùn)行;Go 不會(huì)重新對(duì) channel 或值進(jìn)行求值。

來來來 兩段代碼說明一下

packagemain

import(
"fmt"
)

funcfibonacci(c,quitchanint){
x,y:=1,1

for{
select{
casec<-?x:
??????fmt.Printf("x?:?%d,?y?:?%d
",?x,?y)
????????????x,?y?=?y,?x+y
????????case?<-quit:
????????????fmt.Println("quit")
????????????return
????????}
????}
}

func?main()?{
????c?:=?make(chan?int)
????quit?:=?make(chan?int)

????go?func()?{
????????for?i?:=?0;?i?

輸出結(jié)果為:

4dd7d680-1803-11ee-962d-dac502259ad0.png

第二段代碼:

packagemain

import(
"fmt"
"time"
)

funcChann(chchanint,stopChchanbool){
forj:=0;j

輸出結(jié)果為:

4df00cf0-1803-11ee-962d-dac502259ad0.png

這兩個(gè)例子分別說明了下面兩點(diǎn)

如果任意某個(gè)通信可以進(jìn)行,它就執(zhí)行,其他被忽略。

如果有多個(gè) case 都可以運(yùn)行,Select 會(huì)隨機(jī)公平地選出一個(gè)執(zhí)行。其他不會(huì)執(zhí)行。

但是有個(gè)疑問 為啥第一個(gè)例子里在執(zhí)行偶數(shù)次的時(shí)候 xy會(huì)交換兩次 在下一次調(diào)用的時(shí)候又不會(huì)進(jìn)行交換??jī)?nèi)部是怎么實(shí)現(xiàn)的???真想打個(gè)斷點(diǎn)調(diào)試一下 這個(gè)問題如果我往后會(huì)做go的話 我一定會(huì)回來的?。。?!




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 交換機(jī)
    +關(guān)注

    關(guān)注

    22

    文章

    2746

    瀏覽量

    101919
  • JAVA語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    20693
  • go語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    159

    瀏覽量

    9370

原文標(biāo)題:Java 轉(zhuǎn) Go 之初體驗(yàn) !

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32H5 DA初體驗(yàn)

    本文是接著之前文檔《STM32H5 DA 之初體驗(yàn)(帶 TrustZone)》的后續(xù)之作。
    的頭像 發(fā)表于 01-17 13:39 ?1792次閱讀
    STM32H5 DA<b class='flag-5'>初體驗(yàn)</b>

    三十分鐘入門基礎(chǔ)Go Java小子版

    語(yǔ)法與 C 相近,但功能上有:內(nèi)存安全,GC,結(jié)構(gòu)形態(tài)及 CSP-style 并發(fā)計(jì)算。 適用范圍 本篇文章適用于學(xué)習(xí)過其他面向?qū)ο笳Z(yǔ)言(Java、Php),但沒有學(xué)過Go語(yǔ)言的初學(xué)者。文章 主要從Go
    的頭像 發(fā)表于 08-12 14:32 ?989次閱讀
    三十分鐘入門基礎(chǔ)<b class='flag-5'>Go</b> <b class='flag-5'>Java</b>小子版

    java后端能轉(zhuǎn)鴻蒙app開發(fā)嗎

    java后端轉(zhuǎn)鴻蒙app開發(fā)好。 還是前端呢
    發(fā)表于 01-29 18:15

    嵌入式Linux系統(tǒng)之初體驗(yàn)

    嵌入式Linux系統(tǒng)之初體驗(yàn)
    發(fā)表于 08-18 09:34

    【NUCLEO-F412ZG試用體驗(yàn)】開箱測(cè)評(píng) = 愛之初體驗(yàn)

    本帖最后由 smilepeng 于 2017-3-7 22:20 編輯 【NUCLEO-F412ZG試用體驗(yàn)】開箱測(cè)評(píng) = 愛之初體驗(yàn)我這小白可算見到你了,看到這么大的片子都好看,真是能裝一大
    發(fā)表于 11-09 11:25

    鴻蒙系統(tǒng)-愛之初體驗(yàn)

    the Node.js process with a non-zero exit code.所以在燒錄的時(shí)候可能是由于串口的驅(qū)動(dòng)在VS里沒有設(shè)置好,所以燒錄不了;進(jìn)步的最好方法就是想辦法解決問題,同樣希望各路大神不吝賜教,感激不盡,此次初體驗(yàn)就至此,同時(shí)希望官方能整合一款能通用的開發(fā)軟件。`
    發(fā)表于 01-04 02:52

    Java技術(shù)在嵌入式系統(tǒng)中的應(yīng)用是什么

    Java 程序語(yǔ)言在其產(chǎn)生之初,是為嵌入式設(shè)備--機(jī)頂盒設(shè)備設(shè)計(jì)的?,F(xiàn)在Java又憑借J2MEE和Java Card Platform回到嵌入式系統(tǒng)開發(fā)領(lǐng)域。
    發(fā)表于 12-14 07:07

    請(qǐng)問前端轉(zhuǎn)鴻蒙怎么過渡,需要學(xué)習(xí)Java嗎?

    前端轉(zhuǎn)鴻蒙怎么過渡,需要學(xué)習(xí)Java嗎?
    發(fā)表于 06-08 11:30

    The Java Language Environment

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.1 Beginnings of the Java Language Project. . . . . . . . . . . . . . 121.2 Design
    發(fā)表于 10-14 17:33 ?0次下載

    Java程序是如何運(yùn)行的

    的,什么是JVM;要理解我們編寫的Java程序,運(yùn)行起來以后到底是什么樣子,本質(zhì)上就是弄清楚JVM是什么樣子。 Java 程序的代碼是什么樣的 Java誕生之初最大的賣點(diǎn)就是編寫的代碼
    的頭像 發(fā)表于 12-27 09:31 ?2038次閱讀

    go語(yǔ)言枚舉類型怎么用

    、 java 等,都有原生支持。在 go 中,大家卻找不到 enum 或者其它直接用來聲明枚舉類型的關(guān)鍵字。從熟悉其它編程語(yǔ)言的開發(fā)者轉(zhuǎn)用 go 編程,剛開始會(huì)比較難接受這種情況。其實(shí),如果你看到如何在
    的頭像 發(fā)表于 09-02 09:43 ?5480次閱讀

    "Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--轉(zhuǎn)"

    "Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--轉(zhuǎn)"
    發(fā)表于 12-01 18:06 ?6次下載
    "Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and <b class='flag-5'>Java</b>--<b class='flag-5'>轉(zhuǎn)</b>"

    Go/Rust挑戰(zhàn)Java/Python地位

    編程語(yǔ)言方面,Java 和 Python 仍然遙遙領(lǐng)先,并且分別微小增長(zhǎng)了 1.7% 和 3.4%;圍繞 Go (增長(zhǎng) 20%) 和 Rust (增長(zhǎng) 22%) 的興趣則大幅增加。報(bào)告稱,如果這種
    的頭像 發(fā)表于 03-06 10:19 ?906次閱讀

    STM32H5 DA 之初體驗(yàn)(帶 TrustZone)

    電子發(fā)燒友網(wǎng)站提供《STM32H5 DA 之初體驗(yàn)(帶 TrustZone).pdf》資料免費(fèi)下載
    發(fā)表于 02-19 14:19 ?0次下載
    STM32H5 DA <b class='flag-5'>之初體驗(yàn)</b>(帶 TrustZone)

    JavaGo:面向?qū)ο蟮木奕伺c云原生的輕騎兵

    Go 語(yǔ)言在 2009 年被 Google 推出,在創(chuàng)建之初便明確提出了“少即是多(Less is more)”的設(shè)計(jì)原則,強(qiáng)調(diào)“以工程效率為核心,用極簡(jiǎn)規(guī)則解決復(fù)雜問題”。它與 Java 語(yǔ)言生態(tài)
    的頭像 發(fā)表于 04-25 11:13 ?234次閱讀