1. 程式人生 > >golang 讀取yml格式,多結構體級聯

golang 讀取yml格式,多結構體級聯

1.安裝yml解析包

進入到gopath下執行命令

go get gopkg.in/yaml.v2

2.設定配置檔案config.yml

ipport: 192.168.2.95:10000
startsendtime: 2017-01-02 08:08:08
sendmaxcountperday: 100
devices:
- devid: 123456789
  nodes:
  - pkid: 0
    bkid: 0
    index: 0
    minvalue: 0
    maxvalue: 60
    datatype: normal
  - pkid: 0
    bkid: 0
    index: 0
    datatype: boolean
- devid:
10001
nodes: - pkid: 0 bkid: 1 index: 0 datatype: boolean warnfrequency: 10 sendfrequency: 10

3.編寫測試類

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
    "io/ioutil"
)

//配置檔案中字母要小寫,結構體屬性首字母要大寫

type Myconf struct {
    Ipport    string
    StartSendTime string
    SendMaxCountPerDay int
Devices []Device WarnFrequency int SendFrequency int } type Device struct { DevId string Nodes []Node } type Node struct { PkId string BkId string Index string MinValue float32 MaxValue float32 DataType string } func main() { data, _ := ioutil.ReadFile("config.yml"
) fmt.Println(string(data)) t := Myconf{} //把yaml形式的字串解析成struct型別 yaml.Unmarshal(data, &t) fmt.Println("初始資料", t) if(t.Ipport==""){ fmt.Println("配置檔案設定錯誤") return; } d, _ := yaml.Marshal(&t) fmt.Println("看看 :", string(d)) }

4.注意

1.配置檔案中字母要小寫,結構體屬性首字母要大寫,開發比較快
也可以指定如:yaml:"c",只不過有點麻煩,當然如果重新命名必須要指定
2.yaml:",flow"
這個意思是將陣列用[“a”,”b”]這樣的格式展示,預設展示形式是

- a
- b

相關推薦

golang 讀取yml格式結構

1.安裝yml解析包 進入到gopath下執行命令 go get gopkg.in/yaml.v2 2.設定配置檔案config.yml ipport: 192.168.2.95:100

Golang 之 面向物件struct 定義結構方法(二)

package main import "fmt" type treeNode struct { value int left, right * treeNode } // 給結構體定義列印方法,其中(node treeNode)表示該方法的接受者是那個結構體 fun

golang如何漂亮地列印一個結構前後端對接方便測試資料

func SmartPrint(i interface{}){ var kv = make(map[string]interface{}) vValue := reflect.Value

C語言中隱藏結構的細節

all printf span 包括 strcpy () 創建 提高 結構體指針 我們都知道,在C語言中,結構體中的字段都是可以訪問的。或者說,在C++ 中,類和結構體的主要區別就是類中成員變量默認為private,而結構體中默認為public。結構體的這一個特性,導致結構

C++ 讀取檔案內容到data 結構 structure

#include <iostream> #include <fstream> #include <stdlib.h> using namespace std; typedef struct { int n; char *data; } BLOCK;

CCF201709-2公共鑰匙盒結構簡單模擬拿取歸還鑰匙過程

試題編號:201709-2 試題名稱:公共鑰匙盒 時間限制:1.0s 記憶體限制:256.0MB 問題描述   有一個學校的老師共用N個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰

嵌入式Linux併發程式設計程序間通訊方式System V IPC訊號燈集建立/開啟semget()初始化semctl()P/V操作semop()sembuf結構定義

文章目錄 1,System V IPC - 訊號燈 2,System V IPC - 訊號燈特點 3,System V訊號燈使用步驟 3.1,訊號燈建立/開啟 semget() 3.2,訊號燈初始化 semctl()

當函式使用結構指標變數作為引數時如果結構中嵌套了結構應該如何呼叫其中的元素?

今天寫程式碼時突然遇到了這個問題,以前不曾探討過多層巢狀結構體指標變數的訪問,只知道結構體指標變數要訪問其元素時應該用 -> 來訪問,但對於結構體中巢狀有結構體的時候呢? 請看下面程式碼: #include “stdio.h” using namespac

Golang的面向物件程式設計【結構、方法、繼承、介面】

Golang也支援面向物件程式設計。但與以前學過傳統的面向物件程式語言有區別。 1)Golang沒有類class,Go語言的結構體struct和類class有相似的特性。 2)Golang中不存在繼承,方法過載,建構函式,解構函式,隱藏和this指標。 3)Go

c中全域性變數全域性結構使用

1)在A中定義的函式,如何在B中呼叫? 如果有標頭檔案,在標頭檔案中宣告,在B檔案中#include標頭檔案就可以了。 如果是在.c檔案中宣告的,在B中加extent宣告:extern void timer_hw_init(void); 2)在A中定義的結構體及變數,如何在

46指向結構的指標

#include <stdio.h> int main(int argc, const char * argv[]) {     struct People{         char *name;         int age;     };

C語言結構的前向宣告以及結構巢狀const結構成員的問題

如果你在宣告一個結構體A時,要使用一個未宣告的結構體B時,該怎麼辦?如下: #include <stdio.h> typedef struct demo{     struct stu test;     const int test2;     int te

SpringBoot 讀取yml檔案以及獲取不到value的情況

如果出現value無法獲取的情況,請看一下pom專案是不是依賴不對, 一,spring元件重寫構造方法,在構造方法中引用@value為null 由於spring例項化順序為先執行構造方法,再注入成員變數,所以序為先執行構造方法,再注入成員變數,所以ing例項化順取值為

C語言根據結構成員變數的地址得到結構的地址

/** * container_of - cast a member of a structure out to the containing structure * * @ptr: the pointer to the member. * @type: the type of the container s

python呼叫C++傳遞結構結構指標以及巢狀結構

#include<iostream>using namespace std;//該檔名稱:cpptest.cpp//終端下編譯指令://g++ -o cpptest.so -shared -fPIC cpptest.cppstruct sub_struct{   

[python爬蟲]對html解析讀取編碼格式統一轉碼為utf-8

from urllib.request import urlopen import chardet response=urlopen(url,timeout=3) html_byte=response

【學習筆記】HBuilder初學簡單結構

最近在研究HBuilder的用法,在看到官方網站的介紹和文件後感覺很懵,文件中並不是由淺入深的方式帶著新人通過一些常用示例來入門,一步一步循序漸進的讓使用者瞭解產品,使用產品,而是直接就列出了各種模組的方法、物件、許可權等等,讓我這個從技術出身而又轉型做產品的人

c和c++中結構進行強制型別轉換

有這麼兩個結構體1. struct sockaddr {     unsigned short sa_family;//地址型別     char sa_data[14];//協議地址  } 2. struct sockaddr_in {   

C語言結構體內含有陣列結構作為引數傳遞時需用指標否則對陣列的修改不會被記錄

    在C語言程式設計時,常常會定義結構體,而且結構體裡面常常會有陣列,比如如下所示: typedef struct {int data[MAX_HEAP_SIZE];unsigned int heap_size;}HeapType;     這是一個堆的資料結構,包含堆

C語言中為什麼結構後面經常定義一個空陣列

最近在寫C程式碼,經常看到Linux 的標頭檔案中有的結構體後面會定義一個空陣列,不知道其為何作用?經過高人指點終於明白其要點! struct inotify_event { __s32 wd; __u32 mask; __u32 cookie;