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

golang文件內(nèi)容覆蓋問題的分析及解決

 更新時(shí)間:2024年01月14日 09:53:55   作者:小鎮(zhèn)學(xué)者  
通過golang讀取數(shù)據(jù)庫站點(diǎn)映射配置,生成nginx conf文件,并檢查和重啟nginx服務(wù),已達(dá)到站點(diǎn)自動(dòng)化部署目的,當(dāng)目標(biāo)文件中內(nèi)容很長,而寫入的內(nèi)容很短時(shí),目標(biāo)文件內(nèi)容無法完全覆蓋,本文給大家介紹了解決方法,需要的朋友可以參考下

項(xiàng)目場(chǎng)景:

通過golang讀取數(shù)據(jù)庫站點(diǎn)映射配置,生成nginx conf文件,并檢查和重啟nginx服務(wù),已達(dá)到站點(diǎn)自動(dòng)化部署目的。

問題描述

當(dāng)目標(biāo)文件中內(nèi)容很長,而寫入的內(nèi)容很短時(shí),目標(biāo)文件內(nèi)容無法完全覆蓋。

package main

import (
	"os"
)

func ConfWrite() error {
	config := confTemplate()
	fileName := "/Users/test/Documents/test.txt"
	f, err := os.OpenFile(fileName, os.O_CREATE|os.O_RDWR, 0666)
	if err != nil {
		return err
	}

	defer f.Close()
	if _, err = f.WriteString(config); err != nil {
		return err
	}
	return nil
}

func confTemplate() string {
	return `
    <<listenPort>>

	server
    {
        listen 80;
        listen 443 ssl;
        server_name xxx.com;
        location / {
                <<proxyPass>>
                root /data/test;
        }
    }`
}

func main() {
	_ = ConfWrite()
}

原因分析:

此分析未必正確,日后查到確切原因,再來補(bǔ)充。

os.OpenFile(fileName, os.O_CREATE|os.O_RDWR, 0666) 此函數(shù)打開文件時(shí),緩沖區(qū)的長度由原文件的內(nèi)容決定。如果使用f.WriteString(str) 寫入的str內(nèi)容比原文件緩沖區(qū)的長度短,則原文件尾部的部分內(nèi)容會(huì)保留。并未實(shí)現(xiàn)完全覆蓋的效果。如果str內(nèi)容比原文件緩沖區(qū)的長度長,則原文件會(huì)被完全覆蓋。

解決方案:

添加os.O_TRUNC,清空文件。

os.OpenFile(fileName, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0666)

總結(jié)

到此這篇關(guān)于golang文件內(nèi)容覆蓋問題的分析及解決的文章就介紹到這了,更多相關(guān)golang文件內(nèi)容覆蓋內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang拾遺之自定義類型和方法集詳解

    Golang拾遺之自定義類型和方法集詳解

    golang拾遺主要是用來記錄一些遺忘了的、平時(shí)從沒注意過的golang相關(guān)知識(shí)。這篇文章主要整理了一下Golang如何自定義類型和方法集,需要的可以參考一下
    2023-02-02
  • golang slice元素去重操作

    golang slice元素去重操作

    這篇文章主要介紹了golang slice元素去重操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang爬蟲框架 colly的使用

    Golang爬蟲框架 colly的使用

    本文主要介紹了Golang爬蟲框架 colly的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Go語言使用sync.Mutex實(shí)現(xiàn)資源加鎖

    Go語言使用sync.Mutex實(shí)現(xiàn)資源加鎖

    數(shù)據(jù)共享是一把雙刃劍,Go語言為我們提供了?sync.Mutex,一種最基礎(chǔ)也是最常用的加鎖方式,用于保證在任意時(shí)刻只有一個(gè) goroutine 能訪問共享資源,下面我們就來看看具體實(shí)現(xiàn)吧
    2025-08-08
  • golang 在windows中設(shè)置環(huán)境變量的操作

    golang 在windows中設(shè)置環(huán)境變量的操作

    這篇文章主要介紹了golang 在windows中設(shè)置環(huán)境變量的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • golang利用redis和gin實(shí)現(xiàn)保存登錄狀態(tài)校驗(yàn)登錄功能

    golang利用redis和gin實(shí)現(xiàn)保存登錄狀態(tài)校驗(yàn)登錄功能

    這篇文章主要介紹了golang利用redis和gin實(shí)現(xiàn)保存登錄狀態(tài)校驗(yàn)登錄功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • Go語言并發(fā)之WaitGroup的用法詳解

    Go語言并發(fā)之WaitGroup的用法詳解

    這篇文章主要詳細(xì)介紹了Go語言并發(fā)中得到WaitGroup,文中有相關(guān)的代碼示例供大家參考,對(duì)我們的學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的同學(xué)跟著小編一起來學(xué)習(xí)吧
    2023-06-06
  • golang中g(shù)ob的實(shí)現(xiàn)示例

    golang中g(shù)ob的實(shí)現(xiàn)示例

    本文介紹了Go語言的Gob格式,它是Go以二進(jìn)制形式序列化和反序列化程序數(shù)據(jù)的格式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • Go中過濾范型集合性能示例詳解

    Go中過濾范型集合性能示例詳解

    這篇文章主要為大家介紹了Go中過濾范型集合性能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解

    Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解

    在Golang中,大家必然會(huì)頻繁使用到函數(shù)(Function)和方法(Method),但是有的同學(xué)可能并沒有注意過函數(shù)和方法的異同點(diǎn),函數(shù)和方法都是用來執(zhí)行特定任務(wù)的代碼塊,雖然很相似,但也有很大的區(qū)別,所以本文將詳細(xì)講解函數(shù)和方法的定義以及它們的異同點(diǎn)
    2023-07-07

最新評(píng)論

吐鲁番市| 乌兰察布市| 太和县| 南木林县| 汕头市| 台东县| 乌海市| 虞城县| 江油市| 麻栗坡县| 永昌县| 渭南市| 甘谷县| 桑日县| 叶城县| 布尔津县| 江口县| 东莞市| 博客| 洞口县| 大城县| 云安县| 馆陶县| 应城市| 鄂托克前旗| 台中县| 浠水县| 璧山县| 饶河县| 辰溪县| 扶风县| 额敏县| 进贤县| 岑巩县| 长阳| 靖安县| 会泽县| 申扎县| 囊谦县| 玉屏| 巴林左旗|