最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言基礎(chǔ)函數(shù)包的使用學(xué)習(xí)

 更新時(shí)間:2023年05月23日 10:33:14   作者:甜點(diǎn)cc  
本文通過(guò)一個(gè)實(shí)現(xiàn)加減乘除運(yùn)算的小程序來(lái)介紹go函數(shù)的使用,以及使用函數(shù)的注意事項(xiàng),并引出了對(duì)包的了解和使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

實(shí)現(xiàn)加減乘除運(yùn)算

傳統(tǒng)方法實(shí)現(xiàn):

var n1 float64 = 1.2
var n2 float64 = 2.1
var opt byte = '+'
var res float64

switch opt {
    case '+':
    res = n1 + n2
    case '-':
    res = n1 - n2
    case '*':
    res = n1 * n2
    case '/':
    res = n1 / n2
    default:
    fmt.Println("不合法的運(yùn)算符")
}
fmt.Printf("res=%v", res)

以上代碼的問(wèn)題:

  • 需求變更,取模,代碼不夠靈活
  • 不利于維護(hù)
  • 代碼冗余

函數(shù)可以解決這個(gè)問(wèn)題

  • 封裝
  • 傳參調(diào)用
  • 返回值

函數(shù)基本語(yǔ)法

func 函數(shù)名 (形參列表) (返回值列表) {

執(zhí)行語(yǔ)句

return 返回值列表

}

上面代碼改寫:

func calc(n1 float64, n2 float64, opt byte) float64 {
    var res float64
    switch opt {
    case '+':
        res = n1 + n2
    case '-':
        res = n1 - n2
    case '*':
        res = n1 * n2
    case '/':
        res = n1 / n2
    default:
        fmt.Println("不合法的運(yùn)算符")
    }
    return res
}

func main() {
    fmt.Println("hello fn")
    var n1 float64 = 1.2
    var n2 float64 = 2.1
    var opt byte = '+'
    var result float64 = calc(n1, n2, opt)
    fmt.Printf("%T %v \n", result, result)
}

函數(shù)的問(wèn)題

一個(gè)文件里出現(xiàn)超級(jí)多的函數(shù)

utils.go 文件,專門用于定義函數(shù),讓其它文件來(lái)調(diào)用,工具函數(shù)的封裝,

db.go 文件,專門定義對(duì)數(shù)據(jù)庫(kù)操作的函數(shù)

main.go 文件,引入其它文件,使用工具函數(shù), 代碼更專注

繼而引出包的概念,分門別類的使用,也有利于多人協(xié)同開發(fā),相同的函數(shù)名可以存在不同的包下面

包的原理介紹

包的本質(zhì),實(shí)際上就是創(chuàng)建不同的文件夾,來(lái)存放程序文件。

go的每一個(gè)文件都屬于一個(gè)包的,也就是說(shuō)go以包的形式來(lái)管理文件和項(xiàng)目目錄結(jié)構(gòu)的。

大寫字母開頭的標(biāo)識(shí)符,表示該標(biāo)識(shí)符可導(dǎo)出

作用:

  • 區(qū)分相同名字的函數(shù)、變量等標(biāo)識(shí)符
  • 當(dāng)程序文件很多時(shí),很好的管理項(xiàng)目
  • 控制函數(shù)、變量的訪問(wèn)范圍,即作用域

語(yǔ)法

package util

引入使用(封裝實(shí)現(xiàn)加減乘除的工具函數(shù))

包名.函數(shù)名

省略 GOPATH/src 或 GOROOT/src,前提是在 env.GO111MODULE=off 的情況下

import "包的路徑"
// GOPATH or GOROOT src, env.GO111MODULE=off

utils/utils.go 文件

package utils
import "fmt"
// 標(biāo)識(shí)符大寫,表示可導(dǎo)出
func Calc(n1 float64, n2 float64, opt byte) float64 {
  var res float64
  switch opt {
  case '+':
      res = n1 + n2
  case '-':
      res = n1 - n2
  case '*':
      res = n1 * n2
  case '/':
      res = n1 / n2
  default:
      fmt.Println("不合法的運(yùn)算符")
  }
  return res
}
  • main/main.go 文件
import (
    "fmt"
    "go_code/fndemo1/utils"
)

func main() {
  var n1 float64 = 1.233
    var n2 float64 = 2.111
    var opt byte = '+'
    var result float64 = utils.Calc(n1, n2, opt)
    fmt.Printf("%T %.2f= \n", result, result)
}

// %.2f   默認(rèn)寬度,精度2
// float64 3.34

包的注意事項(xiàng)

包名建議跟目錄名保持一致,也可以不一致

import "包名"

這個(gè)包名,就是 package "包名" 定義的包名,跟目錄名字沒有關(guān)系,倘若 package 定義的名字跟目錄名不一致,引入包的時(shí)候,要以package定義的包名為準(zhǔn)。

  • package "包名" 必須在文件的第一行,然后再 import
  • 引包路徑, GOPATH or GOROOT src目錄下, env.GO111MODULE
  • 包里面要暴露的函數(shù),函數(shù)名必須大寫,表示可導(dǎo)出
  • 如果包名比較長(zhǎng),go支持取別名,定義別名之后,原先的包名就不好使了
  • 在同一個(gè)包下,不允許有相同的函數(shù)名
  • 如果要編譯成一個(gè)可執(zhí)行程序文件,就需要將這個(gè)包聲明為 main

進(jìn)入項(xiàng)目根目錄(go build的執(zhí)行環(huán)境就是運(yùn)行命令的目錄),

go build go_code/fndemo1/main , 在根目錄會(huì)生成main.exe可執(zhí)行文件

go build -o bin/my.exe go_code/fndemo1/main, -o表示輸出的目錄,沒有則會(huì)自動(dòng)創(chuàng)建

import (
    "fmt"
    util "go_code/fndemo1/utils"
)
// 使用
util.Calc()

以上就是Go語(yǔ)言基礎(chǔ)函數(shù)包的使用學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言函數(shù)包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解golang中接口使用的最佳時(shí)機(jī)

    詳解golang中接口使用的最佳時(shí)機(jī)

    接口在系統(tǒng)設(shè)計(jì)中,以及代碼重構(gòu)優(yōu)化中,是一個(gè)不可或缺的工具,能夠幫助我們寫出可擴(kuò)展,可維護(hù)性更強(qiáng)的程序,本文主要為大家介紹一下golang中接口使用的最佳時(shí)機(jī),有興趣的可以了解下
    2023-09-09
  • Go語(yǔ)言panic和recover的用法實(shí)例

    Go語(yǔ)言panic和recover的用法實(shí)例

    panic()和recover()是Go語(yǔ)言中用于處理錯(cuò)誤的兩個(gè)重要函數(shù),本文主要介紹了Go語(yǔ)言panic和recover的用法實(shí)例,panic()用于中止程序并引發(fā)panic,而recover()用于捕獲panic并恢復(fù)程序的執(zhí)行,感興趣的可以了解一下
    2024-01-01
  • Goland 生成可執(zhí)行文件的操作

    Goland 生成可執(zhí)行文件的操作

    這篇文章主要介紹了Goland 生成可執(zhí)行文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • go mayfly開源項(xiàng)目代碼結(jié)構(gòu)設(shè)計(jì)

    go mayfly開源項(xiàng)目代碼結(jié)構(gòu)設(shè)計(jì)

    這篇文章主要為大家介紹了go mayfly開源項(xiàng)目代碼結(jié)構(gòu)設(shè)計(jì)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Go語(yǔ)言題解LeetCode1260二維網(wǎng)格遷移示例詳解

    Go語(yǔ)言題解LeetCode1260二維網(wǎng)格遷移示例詳解

    這篇文章主要為大家介紹了Go語(yǔ)言題解LeetCode1260二維網(wǎng)格遷移示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • GO中cannot find module的錯(cuò)誤解決

    GO中cannot find module的錯(cuò)誤解決

    本文主要介紹了GO中cannot find module的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • Go語(yǔ)言中?Print?Printf和Println?的區(qū)別解析

    Go語(yǔ)言中?Print?Printf和Println?的區(qū)別解析

    這篇文章主要介紹了Go語(yǔ)言中?Print?Printf和Println?的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Golang單元測(cè)試中的技巧分享

    Golang單元測(cè)試中的技巧分享

    這篇文章主要為大家詳細(xì)介紹了Golang進(jìn)行單元測(cè)試時(shí)的一些技巧和科技,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • Go設(shè)計(jì)模式之訪問(wèn)者模式講解和代碼示例

    Go設(shè)計(jì)模式之訪問(wèn)者模式講解和代碼示例

    訪問(wèn)者是一種行為設(shè)計(jì)模式, 允許你在不修改已有代碼的情況下向已有類層次結(jié)構(gòu)中增加新的行為,本文將通過(guò)代碼示例給大家詳細(xì)的介紹一下Go設(shè)計(jì)模式之訪問(wèn)者模式,需要的朋友可以參考下
    2023-08-08
  • golang如何部署到服務(wù)器及應(yīng)注意問(wèn)題解析

    golang如何部署到服務(wù)器及應(yīng)注意問(wèn)題解析

    這篇文章主要為大家介紹了golang如何部署到服務(wù)器及應(yīng)注意問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01

最新評(píng)論

西和县| 临邑县| 老河口市| 漠河县| 木里| 灵璧县| 囊谦县| 阳高县| 蕉岭县| 永仁县| 枝江市| 中西区| 安福县| 宝兴县| 涟水县| 虞城县| 阿坝| 邯郸市| 达日县| 台山市| 雅安市| 定日县| 隆德县| 双柏县| 博罗县| 开封县| 昌图县| 前郭尔| 观塘区| 贺州市| 六安市| 石泉县| 旬邑县| 大足县| 钟祥市| 任丘市| 富宁县| 利津县| 霍城县| 府谷县| 定襄县|