68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
// Copyright © 2018 Inanc Gumus
|
|
// Learn Go Programming Course
|
|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
//
|
|
// For more tutorials : https://learngoprogramming.com
|
|
// In-person training : https://www.linkedin.com/in/inancgumus/
|
|
// Follow me on twitter: https://twitter.com/inancgumus
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
func main() {
|
|
// #1: declare the types
|
|
type text struct {
|
|
title string
|
|
words int
|
|
}
|
|
|
|
type book struct {
|
|
// title string
|
|
// words int
|
|
|
|
// #3: include the text as a field
|
|
// text text
|
|
|
|
// #4: embed the text
|
|
text
|
|
isbn string
|
|
|
|
// #5: add a conflicting field
|
|
title string
|
|
}
|
|
|
|
// #2: print a book
|
|
// moby := book{title: "moby dick", words: 206052, isbn: "102030"}
|
|
// fmt.Printf("%s has %d words (isbn: %s)\n", moby.title, moby.words, moby.isbn)
|
|
|
|
// #3b: type the text in its own field
|
|
moby := book{
|
|
// #5c: type the field in a new field
|
|
// title: "conflict",
|
|
text: text{title: "moby dick", words: 206052},
|
|
isbn: "102030",
|
|
}
|
|
|
|
moby.text.words = 1000
|
|
moby.words++
|
|
|
|
// // #4b: print the book
|
|
fmt.Printf("%s has %d words (isbn: %s)\n",
|
|
moby.title, // equals to: moby.text.title
|
|
moby.words, // equals to: moby.text.words
|
|
moby.isbn)
|
|
|
|
// #3c: print the book
|
|
// fmt.Printf("%s has %d words (isbn: %s)\n",
|
|
// moby.text.title, moby.text.words, moby.isbn)
|
|
|
|
// #5b: print the conflict
|
|
fmt.Printf("%#v\n", moby)
|
|
|
|
// go get -u github.com/davecgh/go-spew/spew
|
|
// spew.Dump(moby)
|
|
}
|