golang fail.go

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang fail.go相关的知识,希望对你有一定的参考价值。

package main

import (
	"encoding/json"
	"fmt"
)

type Sale struct {
	Description string
}

func (s *Sale) ToMap() map[string]interface{} {
	return map[string]interface{}{
		"description": s.Description,
	}
}

func (s *Sale) MarshalJSON() ([]byte, error) {
	return json.Marshal(s.ToMap())
}

type Payment struct {
	ID   int
	Sale *Sale
}

func (p *Payment) ToMap() map[string]interface{} {
	return map[string]interface{}{
		"id":             p.ID,
		"sale":           Map(p.Sale),
	}
}
func (p *Payment) MarshalJSON() ([]byte, error) {
	return json.Marshal(p.ToMap())
}

type Mapper interface {
	ToMap() map[string]interface{}
}

func Map(m Mapper) (result map[string]interface{}) {
	if m == nil {
		return nil
	} else {
		return m.ToMap()
	}
}

func main() {
	var emptySale *Sale
	payment := &Payment{ID:2, Sale:emptySale}

	fmt.Println(payment.MarshalJSON())
}

json [Golang] golang #golang #snippets中有用的片段

[ fmt ](https://golang.org/pkg/fmt/)
-------
Print any `type`(struct,maps,primitives) with the `key` name 

``` 
fmt.Printf("\n [key] :%+v \n", [value]) 

```

Print Error  

``` 
fmt.Errorf(" \nError: %s", err.Error()) 

```

[ log ](https://golang.org/pkg/log/)
-------------

Print any `type`(struct,maps,primitives) with the `key` name 

``` 
log.Printf("\n [key] :%+v \n", [value]) 

```


[ http  ](https://golang.org/pkg/log/)
-------------

http middleware 

```  
func [middlewareName](h http.Handler) http.Handler {
              return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
              // Do things before request 
           	
              nextMiddleware.ServeHTTP(w, r)
              // Do things after request	  
              })
          } 
```
{
         "http Middleware declaration": {
		"prefix": "md",
		"body": ["func $1(${2:nextMiddleware} http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(${3:w} http.ResponseWriter, ${4:r} *http.Request) {\n\t $5\n\t nextMiddleware.ServeHTTP(${3:w}, ${4:r})\n\t 	  $6\n\t})\n}"],
		"description": "Snippet for http middleware declaration"
	},

	"log.Printf()": {
		"prefix": "lf",
		"body": [
			"log.Printf(\"\\n## ${1:text} ##: %+v\\n\", ${2:value})"
		],
		"description": "log.Printf()"
	},
	"fmt.Printf()": {
		"prefix": "ff",
		"body": [
			"fmt.Printf(\"\\n## ${1:text} ## :%+v \\n\", ${2:value})",
		],
		"description": "log.Printf()"
	}
}

以上是关于golang fail.go的主要内容,如果未能解决你的问题,请参考以下文章

Golang 入门

Golang入门到项目实战 第一个golang应用

golang编译androidso无法加载

golang如何打印内存内容

Golang入门到项目实战 golang匿名函数

json [Golang] golang #golang #snippets中有用的片段