Comments (8)
Yes,
also getting a panic for time pointers
%!v(PANIC=Format method: value method time.Time.GoString called using nil *Time pointer)
with a *time.Time in a struct that = nil
Go 1.17.6
Prettty v0.3.0
from pretty.
Some relevant info in https://go.dev/issue/20995.
from pretty.
Same issue. How to fix ?
from pretty.
Still observing this on Go 1.18.5.
from pretty.
So the go dev issue 20995 says that the workaround (while a bit ugly) is to essentially check to see if you have a pointer, and whether the Elem of the pointer has the method:
if fieldType.Kind() == reflect.Ptr && field.IsNil() {
// Method defined on a value receiver.
if _, ok := fieldType.Elem().MethodByName("Check"); ok {
continue // Ignore since value can't be retrieved from nil pointer
}
}
Essentially you are saying "oh, I have a nil pointer, let me check if the method is defined on the Value (non-pointer) of this type".
I'm not sure if that means all of the kr/pretty code that says "you have a custom formatter" then needs to do this check (but the custom formatter is defined on a value type but I have a nil pointer)
It doesn't seem bad to just say "ignore custom formatters if you have a nil pointer"
from pretty.
We fixed this in our canonical
fork at canonical@771f4dc (see discussion at canonical#1). It's fixed in a similar way to how fmt
does when calling GoString
and other user-defined methods. I've also created a pull request here with the same fix: #87
from pretty.
Shouldn't there be a new proper release with this fix integrated?
from pretty.
Shouldn't there be a new proper release with this fix integrated?
Yes indeed. Just tagged v0.3.1. Thank you.
from pretty.
Related Issues (20)
- Minor golint issues HOT 1
- Diff doesn't return difference b/w nil of slice and empty slice
- Set max depth HOT 1
- formatting of maps is invalid go code HOT 3
- Allow an option for 'deterministic' iteration order for map prints HOT 4
- Support fuzzy matching for floating point types
- type compare HOT 1
- Tag a release? HOT 2
- TestGoSyntax broken at v0.1.0 in Go 1.11
- Is there a way how I can skip zero values? HOT 1
- Go 1.15: conversion from int to string yields a string of one rune
- Reference looping causes recursion to fail to terminate, resulting in stack overflow HOT 2
- Request a new tagged release HOT 2
- When I try to sync dependencies for this I get an error. HOT 2
- Expanded the print depth limit from 10 to 30.
- Go version is very old HOT 2
- Print uint in decimal? HOT 3
- false positive in cycle check
- Can non-nil interface fields be considered `nonzero`?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pretty.