精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java轉Go之初體驗

Android編程精選 ? 來源:CSDN ? 2023-07-03 10:22 ? 次閱讀

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

直接上代碼

packagemain//表明包

import"fmt"http://導入包fmt控制輸入輸出感覺和java的System.out和Scanner有點像

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

輸出結果:

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

是不是感覺還可以。

二、Go語言環境安裝

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

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

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

配置系統變量,然后就可以開始玩了

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

三、基礎語法

行分割符:不需要像java一眼每句之后都加一個;表明結束 每一行都是單獨的一句 如果非要把幾行語句寫在一起 就需要加分號了

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

標識符 標識符用來命名變量、類型等程序實體。一個標識符實際上就是一個或是多個字母(AZ和az)數字(0~9)、下劃線_組成的序列,但是第一個字符必須是字母或下劃線而不能是數字。

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

關鍵字

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

預定義標識符

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

四、數據類型

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

首先一點,給我印象比較深的就是 對數字類型添加了很多的包裝,在不同的應用范圍內使用不同的數據類型 例如

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

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

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

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

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

當然這樣要求的更細致 感覺編譯的時候 就越容易控制 如果方方面面都這么細致的話 運行速度上就可以提高不少的

五、聲明變量

var identifier type 例:var a int;

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

指定變量類型,如果沒有初始化,則變量默認為零值
數值類型(包括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 是接口

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

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

多變量聲明

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

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

//出現在:=左側的變量不應該是已經被聲明過的,否則會導致編譯錯誤
vname1,vname2,vname3:=v1,v2,v3


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

六、常量

const 定義常量關鍵字 目前感覺和final static 類似

定義了之后就不能改了 如果代碼里面改了的話 會報 cannot assign to LENGTH 錯誤

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

下來就發現一個神奇懂東西 iota

iota,特殊常量,可以認為是一個可以被編譯器修改的常量。

iota 在 const關鍵字出現時將被重置為 0(const 內部的第一行之前),const 中每新增一行常量聲明將使 iota 計數一次(iota 可理解為 const 語句塊中的行索引)。

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

枚舉自增計數器 感覺是這么個意思

運算符

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

&這個就是只有兩個1的時候才是1其余都是0

|這個是只有兩個0的時候才是0其余都是1和與剛好相反

^這個簡單粗暴兩個相同的數字是0不同的時候是1

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

這個<<=后面的幾個都還有點驚艷到我了 厲害厲害

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

這兩個優點沒太看懂 敲個代碼試一下

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

加*輸出的是內容 不加輸出的就是地址 這個指針的概念 java里是沒有的

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

七、條件語句

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

這個select語句真的是看的我欲生欲死

以下描述了 select 語句的語法:

每個 case 都必須是一個通信

所有 channel 表達式都會被求值

所有被發送的表達式都會被求值

如果任意某個通信可以進行,它就執行,其他被忽略。

如果有多個 case 都可以運行,Select 會隨機公平地選出一個執行。其他不會執行。

否則:

如果有 default 子句,則執行該語句。

如果沒有 default 子句,select 將阻塞,直到某個通信可以運行;Go 不會重新對 channel 或值進行求值。

來來來 兩段代碼說明一下

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?

輸出結果為:

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

第二段代碼:

packagemain

import(
"fmt"
"time"
)

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

輸出結果為:

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

這兩個例子分別說明了下面兩點

如果任意某個通信可以進行,它就執行,其他被忽略。

如果有多個 case 都可以運行,Select 會隨機公平地選出一個執行。其他不會執行。

但是有個疑問 為啥第一個例子里在執行偶數次的時候 xy會交換兩次 在下一次調用的時候又不會進行交換?內部是怎么實現的???真想打個斷點調試一下 這個問題如果我往后會做go的話 我一定會回來的!!!!




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 交換機
    +關注

    關注

    21

    文章

    2623

    瀏覽量

    99267
  • JAVA語言
    +關注

    關注

    0

    文章

    138

    瀏覽量

    20076
  • go語言
    +關注

    關注

    1

    文章

    158

    瀏覽量

    9029

原文標題:Java 轉 Go 之初體驗 !

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32H5 DA初體驗

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

    三十分鐘入門基礎Go Java小子版

    語法與 C 相近,但功能上有:內存安全,GC,結構形態及 CSP-style 并發計算。 適用范圍 本篇文章適用于學習過其他面向對象語言(Java、Php),但沒有學過Go語言的初學者。文章 主要從Go
    的頭像 發表于 08-12 14:32 ?673次閱讀
    三十分鐘入門基礎<b class='flag-5'>Go</b> <b class='flag-5'>Java</b>小子版

    java后端能鴻蒙app開發嗎

    java后端鴻蒙app開發好。 還是前端呢
    發表于 01-29 18:15

    嵌入式Linux系統之初體驗

    嵌入式Linux系統之初體驗
    發表于 08-18 09:34

    【NUCLEO-F412ZG試用體驗】開箱測評 = 愛之初體驗

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

    鴻蒙系統-愛之初體驗

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

    Java技術在嵌入式系統中的應用是什么

    Java 程序語言在其產生之初,是為嵌入式設備--機頂盒設備設計的。現在Java又憑借J2MEE和Java Card Platform回到嵌入式系統開發領域。
    發表于 12-14 07:07

    請問前端鴻蒙怎么過渡,需要學習Java嗎?

    前端鴻蒙怎么過渡,需要學習Java嗎?
    發表于 06-08 11:30

    golang和java的文件儲實現

    正文日志的儲和壓縮是非常關鍵的,它不僅可以減少硬盤空間占用,主要還可以在發生故障時根據日志定位出故障原因。下面來看看golang和java的文件儲實現。go語言:用到了filepa
    發表于 10-20 17:36

    The Java Language Environment

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

    Java程序是如何運行的

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

    go語言枚舉類型怎么用

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

    "Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--"

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

    Go/Rust挑戰Java/Python地位

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

    STM32H5 DA 之初體驗(帶 TrustZone)

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